翻转句子中单词的顺序
来源:互联网 发布:php radio 取值 编辑:程序博客网 时间:2024/06/05 07:40
题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。比如输入"I love you.",输出"you. love I"。
解题思路:
我们可以先翻转整个字符串,然后再翻转字符串中的每个单词。比如"I love you."翻转整个字符串后得到".uoy evol I",再翻转字符串中的每一个单词得到"you. love I"。当然也可以先翻转字符串中的每个单词,翻转整个字符串。注意多个空格连续时还是当成一个分隔符,比如" I love you. "翻转句子后变成" you. love I "。
解题思路:
我们可以先翻转整个字符串,然后再翻转字符串中的每个单词。比如"I love you."翻转整个字符串后得到".uoy evol I",再翻转字符串中的每一个单词得到"you. love I"。当然也可以先翻转字符串中的每个单词,翻转整个字符串。注意多个空格连续时还是当成一个分隔符,比如" I love you. "翻转句子后变成" you. love I "。
算法实现:
- void reverseSentence(char str[])
- {
- if(str==NULL||str[0]=='\0') return;//字符串为空或为空串时,直接返回
- reverseStr(str);
- int n=0;
- int start=0;
- char temp;
- while(str[n]!='\0')
- {
- while(str[n]==' ') //当多个' '连着时,还是将它们看成一个分割符
- {
- n++;
- }
- start=n;
- while(str[n]!=' '&&str[n]!='\0')
- {
- n++;
- }
- temp=str[n];//保存翻转单词的后一个字符,在这里是' '字符或'\0'结束符
- str[n]='\0';
- reverseStr(str+start);
- str[n]=temp;//恢复翻转单词的后一个字符
- if(str[n]=='\0') break;//跳出循环
- n++;
- }
- }
reverseStr()方法我的一篇博文有它的具体实现:字符串翻转
PS:这里翻转单词时,可以通过在翻转字符串的基础上,另外再传递一个结束指针实现,很多人都是这样实现的。但是我前面已经写了一个翻转字符串的方法,不想再改这个方法,让它接受两个参数的传递,所以我用了一个辅助字符,当要翻转单词时,我保存翻转单词的后一个字符,然后令翻转单词的后一个字符为'\0',翻转完该单词后就恢复翻转单词的后一个字符。
0 0
- 翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 10.翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 10、翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 翻转句子中单词的顺序。
- 10、翻转句子中单词的顺序
- 翻转句子中单词的顺序。
- 翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 左旋转字符串
- svn分支和标记
- 线程之间的通信
- 回文字符串
- IO - 同步,异步,阻塞,非阻塞
- 翻转句子中单词的顺序
- Hadoop 2.6 日志文件和MapReduce的log文件研究心得
- iMX257的GPIO中断配置
- 地图展示与导航
- 字符串中第一个只出现一次的字符
- 在字符串中删除特定的字符
- BZOJ 4009 HNOI2015 接水果 树套树
- JQuery实现文本放大效果
- mysql大小写问题