您的位置:首页 > 其它

笔试——字符串算法题——翻转分段字符串

2013-11-16 11:56 411 查看
这个既然有人笔试完就问,那我还是敲一份分享一下吧。

题目大意:字符串的问题,把字符串按点的位置翻转。要求时间复杂度O(n)、空间复杂度O(1)。

例如:对于字符串 "www.hyzhou.com.cn" 输出 "cn.com.hyzhou.www"

代码简单明了,就不写注释了,是在看不懂,自己调试运行看看过程就懂了。

#include <stdio.h>

void swap( char &a, char &b ) {
char c = a; a = b; b = c;
}

char* reverse( char* src, int start, int end ) {
for( int i=start, j=end; i<j; i++, j-- )
swap( src[i], src[j] );
return src;
}

char* reverse( char* src ) {
int start, end;
for( end=0, start=0; src[end]!='\0'; end++ ) {
if( src[end+1]=='.' || src[end+1]=='\0' ) {
reverse( src, start, end );
start = end+2;
}
}
reverse( src, 0, end-1 );
return src;
}

int main()
{
char s[] = "www.hyzhou.com.cn";
reverse(s);
printf( "%s\n", s );
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐