这个既然有人笔试完就问,那我还是敲一份分享一下吧。
题目大意:字符串的问题,把字符串按点的位置翻转。要求时间复杂度O(n)、空间复杂度O(1)。
例如:对于字符串 "www.hyzhou.com.cn" 输出 "cn.com.hyzhou.www"
题目大意:字符串的问题,把字符串按点的位置翻转。要求时间复杂度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 );
}