LintCode(easy)翻转字符串
来源:互联网 发布:微信跳转淘宝 编辑:程序博客网 时间:2024/05/22 12:43
题目:
给定一个字符串,逐个翻转字符串中的每个单词。
您在真实的面试中是否遇到过这个题? 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.标点问题:此题目貌似暂时不用考虑,但是可以拓展一下
0 0
- LintCode(easy)翻转字符串
- LintCode- 翻转字符串
- lintcode --翻转字符串
- LintCode(3):翻转字符串
- lintcode,翻转字符串
- Lintcode 翻转字符串
- LintCode 53 翻转字符串
- lintcode--翻转字符串
- [LintCode]53.翻转字符串
- lintcode翻转字符串
- [Lintcode] #53 翻转字符串
- 翻转字符串(LintCode)
- LintCode(easy)字符串查找
- LintCode | Easy | 翻转二叉树 | Invert Binary Tree
- LintCode | Easy | 翻转链表 | Reverse Linked List
- LintCode-剑指Offer-(53)翻转字符串
- LintCode 第53题 翻转字符串
- LintCode(easy)比较字符串(正确版)
- 图片缓存之内存缓存技术LruCache,软引用
- Android Jni 查找错误位置注意事项
- 【9002】局域网
- Generation and Comprehension of Unambiguous Object Descriptions
- pat--Sort with Swap(0, i)
- LintCode(easy)翻转字符串
- ToString()的用法 C# 数学函数库
- iOS编程(双语版) - 视图 - Transform(转换)
- Myeclipse快捷方法
- css3实现百分比宽度减固定宽度展现
- Java反射详解
- CSS 代码语法 代码注释
- RxJava实战演示2,获取网络图片
- 走遍亚洲 —— 中东