【字符串与数组】
Q:Write code to reverse a C-Style String (C-String means that “abcd” is represented as
five characters, including the null character )
题目:将一个c风格字符串逆转(c风格字符串即以空字符结尾的字符串)。
解答:
方法一:从字符串的两端往中间走,不断交换两端的字符即可,时间复杂度为O(n)。
void reverse(char* str){ int len=strlen(str); int i; char chTmp; for(i=0;i<len/2;i++){ chTmp=str[i];//交换字符串 str[i]=str[len-i-1]; str[len-i-1]=chTmp; } }
方法二:方法一的一种更文艺写法,也是更切合题意的一种写法(因为题中提到c风格字符串),从字符串的两端往中间走,不断交换两端的字符即可。
void reverse(char * str){ char* end=str; char temp; if(str){ while(*end){ ++end; } } --end; while(str<end){ temp=*str; *str++=*end; *end--=temp; } }
作者:Viidiot 微信公众号:linux-code