现在的位置: 首页 > 综合 > 正文

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

2019年08月22日 ⁄ 综合 ⁄ 共 606字 ⁄ 字号 评论关闭

        这个既然有人笔试完就问,那我还是敲一份分享一下吧。
        题目大意:字符串的问题,把字符串按点的位置翻转。要求时间复杂度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 );
} 

抱歉!评论已关闭.