Leetcode--151. 翻转字符串里的单词
給定一個字符串,逐個翻轉字符串中的每個單詞。
?
示例 1:
輸入: "the sky is blue"
輸出:?"blue is sky the"
示例 2:
輸入: " ?hello world! ?"
輸出:?"world! hello"
解釋: 輸入字符串可以在前面或者后面包含多余的空格,但是反轉后的字符不能包括。
示例 3:
輸入: "a good ??example"
輸出:?"example good a"
解釋: 如果兩個單詞間有多余的空格,將反轉后單詞間的空格減少到只含一個。
?
說明:
無空格字符構成一個單詞。
輸入字符串可以在前面或者后面包含多余的空格,但是反轉后的字符不能包括。
如果兩個單詞間有多余的空格,將反轉后單詞間的空格減少到只含一個。
?
思路:以空格為界限把字符串拆成字符串數組
數組中會有以下幾種情況
1. 出現單詞而無空格,->將單詞連接到結果字符串中
2. 出現單詞及空格,->去掉空格,再將單詞連接到結果字符串中
3. 只有空格,->去掉空格之后,它為空,不用管了
提交的代碼:
class?Solution?{
????public?String?reverseWords(String?s)?{
?????????String?emptyStr="?";
????????final?String[]?s1?=?s.trim().split(emptyStr);
????????StringBuilder?sb=new?StringBuilder();
????????for?(int?i?=?s1.length?-?1;?i?>=?0;?i--)?{
????????????String?str=s1[i];
???????????while?(str.contains(emptyStr)){
???????????????str=str.replaceAll(emptyStr,"");
???????????}
????????????if?("".equals(str)){
????????????????continue;
????????????}
????????????sb.append(str);
????????????if?(i!=0){
????????????????sb.append(emptyStr);
????????????}
????????}
????????return?sb.toString();
????}
}
總結
以上是生活随笔為你收集整理的Leetcode--151. 翻转字符串里的单词的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 剑指 Offer 68 - II. (二
- 下一篇: Leetcode--78. 子集