[LeetCode]Reverse Words in a String
来源:互联网 发布:js在线客服插件 编辑:程序博客网 时间:2024/05/16 16:07
参考一些资料,分享一个简洁的代码
思路:
i, j分别指向一个单词的 首尾,从s的结尾开始向前遍历,找到一个单词就取出来放在StringBuilder中。
public class Solution { public String reverseWords(String s) { StringBuilder builder = new StringBuilder(); int j = s.length(); for (int i = s.length() -1 ; i >= 0; --i){ if (s.charAt(i) == ' '){ j = i; }else if ( i == 0 || s.charAt(i-1) == ' '){ if (builder.length() != 0){ builder.append(' '); } builder.append(s.substring(i, j)); } } return builder.toString(); }}
-----------第一遍的解题思路--------------
解题思路:
1,把首尾的 space都去掉
2,两个指针start和it分别指向word的开始和结束的下一位;
3,isPreWord用于指示前一个char是字母还是 空格(这是为了过滤两个单词中间有多个space的情况)
4,每发现一个新的完整的单词,就插入到ret的开头,接着插入一个 space
5,因为while循环中我们是以space作为发现单词的标志,而语句的结尾没有space,所以在while结束后,我们还有最后一个单词需要insert进去ret
6,最后str = ret;
class Solution {public: void reverseWords(string &s) { strip(s); string ret; auto it = s.begin(); auto start = it; bool isPreWord = false; while(it != s.end()){ if (*it == ' '){ if (isPreWord){ isPreWord = false; ret.insert(ret.begin(), start, it); ret.insert(0, 1, ' '); }else{ it++; } }else{ if (!isPreWord){ isPreWord = true; start = it; } it ++; } } ret.insert(ret.begin(), start, it); s = ret; } void strip(string &s){ lstrip(s); rstrip(s); } void lstrip(string &s){ auto it = s.begin(); while(it != s.end()){ if (*it == ' '){ it = s.erase(it); }else{ break; } } } void rstrip(string &s){ auto rit = s.rbegin(); while(rit != s.rend()){ if (*rit == ' '){ rit = string::reverse_iterator(s.erase((++rit).base())); }else{ break; } } }};
0 0
- [LeetCode]Reverse Words in a String
- Leetcode - string - Reverse Words in a String
- Reverse words in a String leetcode
- [LeetCode]Reverse Words in a String
- 【LeetCode】Reverse Words in a String
- Reverse Words in a String (LeetCode)
- LeetCode Reverse Words in a String Total
- LeetCode(151)Reverse Words in a String
- Reverse Words in a String -- LeetCode
- leetcode Reverse Words in a String
- LeetCode OJ: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 OJ :Reverse Words in a String
- Leetcode: Reverse Words in a String
- 【LeetCode】Reverse Words in a String
- HDOJ-2091 空心三角形 C语言
- [C Language]一个c回调函数的例子
- POJ1847--Tram 【最短路spfa】
- 《人工智能教程(张仰森)》(一)
- PAT (Basic Level) Practise (中文)1033. 旧键盘打字(20) C语言
- [LeetCode]Reverse Words in a String
- PHP CURL CURLOPT参数说明(curl_setopt)
- Humble Numbers
- hdu 1864 最大报销额 dp
- PS做以图片为文字背景
- HD1201 18岁生日
- mark
- win8、win10下卸载程序报错误2502、2503的解决办法
- 7_24_heml_美食网设计_3_完整稿