leetcode151. 翻轉字符串裏的單詞

給定一個字符串,逐個翻轉字符串中的每一個單詞。

 

示例 1:

輸入: "the sky is blue"
輸出: "blue is sky the"

示例 2:

輸入: "  hello world!  "
輸出: "world! hello"
解釋: 輸入字符串能夠在前面或者後面包含多餘的空格,可是反轉後的字符不能包括。

示例 3:

輸入: "a good   example"
輸出: "example good a"
解釋: 若是兩個單詞間有多餘的空格,將反轉後單詞間的空格減小到只含一個。

 

來源:力扣(LeetCode)
連接:https://leetcode-cn.com/problems/reverse-words-in-a-string
著做權歸領釦網絡全部。商業轉載請聯繫官方受權,非商業轉載請註明出處。網絡

解答;app

這裏吐槽一句:別用坑爹的spilt函數,真的坑死了,仍是本身寫一個用吧,其餘沒什麼,就是將字符串分割放入一個棧中,最後在取出來就倒序了。ide

 1 class Solution {
 2     public String reverseWords(String s) {
 3         if(s==null||s.length()==0)
 4             return s;
 5         LinkedList<String> list=new LinkedList<>();
 6         helper(list,s);
 7         if(list.isEmpty())
 8             return "";
 9         StringBuilder sb=new StringBuilder();
10         while(!list.isEmpty())
11             sb.append(list.pop()+" ");
12         return sb.toString().substring(0,sb.length()-1);
13         
14         
15     }    
16     public void helper(LinkedList<String>list,String s)
17     {
18         int r=0;
19         int l=0;
20         boolean flag=false;
21         while(r<s.length())
22         {
23             if(s.charAt(r)==' '&&flag==true)
24             {
25                 String str=s.substring(l,r);
26                 list.push(str);
27                 flag=false;
28                 r++;
29             }
30             else if(s.charAt(r)==' '&&flag==false)
31             {
32                 r++;
33             }
34             else if(s.charAt(r)!=' '&&flag==false)
35             {
36                 flag=true;
37                 l=r;
38                 r++;
39             }
40             else
41                 r++;   
42         }
43         if(flag)
44             list.push(s.substring(l,r));
45     }
46 }
View Code
相關文章
相關標籤/搜索