读书人

[google口试CTCI] 1-2 逆转c风格字符串

发布时间: 2013-10-19 20:58:23 作者: rapoo

[google面试CTCI] 1-2 逆转c风格字符串

【字符串与数组】

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

读书人网 >编程

热点推荐