Reverse Words in a String --leetcode
2014-11-15 14:55
351 查看
原题链接:https://oj.leetcode.com/problems/reverse-words-in-a-string/
题目大意:以单词为单位翻转整个字符串,如“I am a coder",翻转后为"coder a am I”
阶梯方法:两次reverse
思路:进行2次reverse,第一次翻转整个字符串,第二次翻转单个单词。如“I am a coder",第一次翻转后为”redoc a ma I",第二次翻转为“coder a am I"。需要考虑的边界条件为,首尾出线空格,以及单词间有连续多个空格。
时间复杂度:O(N) 空间复杂度: constant space
题目大意:以单词为单位翻转整个字符串,如“I am a coder",翻转后为"coder a am I”
阶梯方法:两次reverse
思路:进行2次reverse,第一次翻转整个字符串,第二次翻转单个单词。如“I am a coder",第一次翻转后为”redoc a ma I",第二次翻转为“coder a am I"。需要考虑的边界条件为,首尾出线空格,以及单词间有连续多个空格。
时间复杂度:O(N) 空间复杂度: constant space
class Solution { public: void reverseWords(string &s) { if(s.empty()) return ; reverse(s,0,s.length()-1); int start=0; for(int i=0;i<s.length();i++) { if(s[i]==' ') { reverse(s,start,i-1); start=i+1; } } reverse(s,start,s.length()-1); //下面处理连续空格或者首尾空格 while(!s.empty()&&s[0]==' ') { s.erase(0,1); } while(!s.empty()&&s[s.length()-1]==' ') { s.erase(s.length()-1,1); } //处理两个字符中间多个空格的情形,经过上面处理若s不为空,则首尾必不为空格 if(!s.empty()) { for(int i=0;i<s.length()-1;) { while(s[i]==' '&&s[i+1]==' ') s.erase(i+1,1); i++; } } } void reverse(string &s,int start,int end) { if(start<end) { char temp; int i, j; for(i=start,j=end;i<j;i++,j--) { temp=s[i]; s[i]=s[j]; s[j]=temp; } } } };
相关文章推荐
- Leetcode 第151题 最新题解 Reverse Words in a String
- leetcode JAVA Reverse Words in a String 难度系数2-3?最新题151
- LeetCode(151)Reverse Words in a String
- Leetcode: Reverse Words in a String
- LeetCode Reverse Words in a String
- 【LeetCode with Python】 Reverse Words in a String
- [LeetCode]Reverse Words in a String
- leetcode Reverse Words in a String
- [leetcode]Reverse Words in a String
- Leetcode_Reverse-Words-in-a-String
- LeetCode | Reverse Words in a String
- Reverse Words in a String (LeetCode)
- [Leetcode Solution] Reverse Words in a String
- LeetCode151:Reverse Words in a String
- 【LeetCode】Reverse Words in a String
- [leetCode]Reverse Words in a String
- leetcode - Reverse Words in a String
- [LeetCode] Reverse Words in a String
- 【LeetCode】Reverse Words in a String
- 【LeetCode】Reverse Words in a String