LintCode(easy)翻转字符串
2016-07-26 11:27
369 查看
题目:
给定一个字符串,逐个翻转字符串中的每个单词。
您在真实的面试中是否遇到过这个题? Yes
说明
单词的构成:无空格字母构成一个单词
输入字符串是否包括前导或者尾随空格?可以包括,但是反转后的字符不能包括
如何处理两个单词间的多个空格?在反转字符串中间空格减少到只含一个
样例
给出s = “the sky is blue”,返回”blue is sky the”
bug1
改正:
其中重点在于加了一个i–;
正确代码:
VC-翻转字符串
另外一种方法:
之前的bug:
要把双引号改成单引号,因为s[i]是字符,而“ ”是字符串。
整个题目需要考虑的点有:
1.空格问题:首尾不能有空格,每个单词之间只能有一个空格(如果给出的字符串中单词之间的空格多于一个怎么办)
2.标点问题:此题目貌似暂时不用考虑,但是可以拓展一下
给定一个字符串,逐个翻转字符串中的每个单词。
您在真实的面试中是否遇到过这个题? Yes
说明
单词的构成:无空格字母构成一个单词
输入字符串是否包括前导或者尾随空格?可以包括,但是反转后的字符不能包括
如何处理两个单词间的多个空格?在反转字符串中间空格减少到只含一个
样例
给出s = “the sky is blue”,返回”blue is sky the”
bug1
for (int i = 0; i < s.size(); i++){ //if (s[0] == ' ') s.erase(0, 1); //if (s[s.size()-1] == ' ') s.erase(s.size()-1, 1); if (s[i] == ' '&&s[i - 1] == ' ') { s.erase(i - 1, 1); doublekong = true; }
改正:
for (int i = 0; i < s.size(); i++){ //if (s[0] == ' ') s.erase(0, 1); //if (s[s.size()-1] == ' ') s.erase(s.size()-1, 1); if (s[i] == ' '&&s[i - 1] == ' ') { s.erase(i - 1, 1); i--; doublekong = true; }
其中重点在于加了一个i–;
正确代码:
class Solution { public: /** * @param s : A string * @return : A string */ string reverseWords(string s) { // write your code here int w = 0; reverse(s.begin(), s.end()); for (int i = 0; i < s.size(); i++){ if (s[0] == ' ') s.erase(0, 1); if (s[s.size() - 1] == ' ') s.erase(s.size() - 1, 1); if (s[i] == ' '&&s[i - 1] == ' ') { s.erase(i - 1, 1); i--; } } //cout << s << s.size()<<endl; for (int i = 0; i < s.size(); i++){ if (s[i] == ' '){ reverse(s.begin()+w , s.begin() + i); w = i+1; } } reverse(s.begin() + w, s.end()); // cout << s << s.size() << endl; return s; } };
VC-翻转字符串
另外一种方法:
string reverseWords(string s) { string w, ret; int n = s.size() - 1; for (int i = s.size() - 1; i>-1; --i){ if (s[i] == ' '&&s[i - 1] != ' ' && i != 0){ w = s.substr(i+1, n - i); n = i-1; ret += (w+" " ); cout << w; } if (i == 0){ w = s.substr(i, n+1 - i); ret += w; } }//cout << ret; return ret; }
之前的bug:
if (s[i] == " " || i == 0)
要把双引号改成单引号,因为s[i]是字符,而“ ”是字符串。
整个题目需要考虑的点有:
1.空格问题:首尾不能有空格,每个单词之间只能有一个空格(如果给出的字符串中单词之间的空格多于一个怎么办)
2.标点问题:此题目貌似暂时不用考虑,但是可以拓展一下
相关文章推荐
- Generation and Comprehension of Unambiguous Object Descriptions
- Laravel5权限管理方法详解
- iOS 公用方法
- Java反射详解
- 如何取消codeblocks对msvcr100.dll的依赖?
- iOS编程(双语版) - 视图 - Transform(转换)
- MFC客户区拖动窗口实现
- SQLite中如何用api操作BLOB类型的字段
- Debug与Release版本区别
- ajax之ajax是什么???
- cocoapods的最新安装 遇到的坑 Error installing pods:activesupport requires Ruby version >= 2.2.2
- ajax常用操作及 跨域的实现原理
- Spring+quart
- python脚本编程:批量复制或删除文件
- Grub 配置文件详解
- 10.关联(Association)
- 转 Windows+VS2013爆详细Caffe编译安装教程
- git 提交代码到代码库 命令
- python 元组列表字典的区别
- 如何合理地估算线程池大小