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

本文探讨了一道笔试题目,涉及如何翻转分段的字符串。提供的代码简洁易懂,即使没有注释,通过调试运行也能理解其工作原理。
摘要由CSDN通过智能技术生成
        这个既然有人笔试完就问,那我还是敲一份分享一下吧。
        题目大意:字符串的问题,把字符串按点的位置翻转。要求时间复杂度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 );
} 


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值