博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面试经典(1)---翻转字的顺序在一个句子
阅读量:6814 次
发布时间:2019-06-26

本文共 929 字,大约阅读时间需要 3 分钟。

题目:输入一个英文句子,翻转句子中单词的顺序。但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。

比如输入“I am a student.”,则输出“student. a am I”。

因为本题须要翻转句子。我们先颠倒句子中的全部字符。这时。不但翻转了句子中单词的顺序。并且单词内字符也被翻转了。我们再颠倒每一个单词内的字符。因为单词内的字符被翻转两次,因此顺序仍然和输入时的顺序保持一致。这个题目事实上着重考察的逻辑思维。

void Reverse(char *pBegin, char *pEnd){	if(pBegin == NULL || pEnd == NULL)		return;		while(pBegin < pEnd)	{		char temp = *pBegin;		*pBegin = *pEnd;		*pEnd = temp;				pBegin ++, pEnd --;	}}char* ReverseSentence(char *pData){	if(pData == NULL)		return NULL;		char *pBegin = pData;	char *pEnd = pData;		while(*pEnd != '\0')		pEnd ++;	pEnd--;		Reverse(pBegin, pEnd);		pBegin = pEnd = pData;	while(*pBegin != '\0')	{		//跳过空格		if(*pBegin == ' ')		{			pBegin ++;			pEnd ++;			continue;		}		// A word is between with pBegin and pEnd, reverse it		else if(*pEnd == ' ' || *pEnd == '\0')		{			Reverse(pBegin, --pEnd);			pBegin = ++pEnd;		}		else		{			pEnd ++;		}	}		return pData;}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

你可能感兴趣的文章
requireJs 模块化简陋版本
查看>>
我的友情链接
查看>>
How to upgrade vim to version 8 on CentOS 7
查看>>
xcode pod 报import 找不到 pods的支持问题解决方法之一
查看>>
nginx配置让任何文件在浏览器中显示文本text/plain
查看>>
思科路由器×××配置-- 动态 site-to-site ×××(上)
查看>>
Visual Studio统计有效代码行数
查看>>
Qt连接Oracle数据库常见问题
查看>>
45个实用的JavaScript技巧、窍门和最佳实践
查看>>
sqlserver 2005 列字符串拼接
查看>>
用面向接口编程思想看找对象
查看>>
TWaver GIS在电信中的使用
查看>>
MySQL5.7使用Notifier启动、停止服务时出现的问题
查看>>
今天用java弄个json数据交换接口,个人感觉这样实现省事实力。
查看>>
5 Servlet
查看>>
百度创始人李彦宏:要做最好的中文搜索引擎
查看>>
3.26作业
查看>>
Python里的append和extend
查看>>
cut命令
查看>>
JavaScript强化教程-cookie对象
查看>>