【剑指offer】面试题58 - I:翻转单词顺序(Java)
輸入一個英文句子,翻轉句子中單詞的順序,但單詞內字符的順序不變。為簡單起見,標點符號和普通字母一樣處理。例如輸入字符串"I am a student. ",則輸出"student. a am I"。
?
示例 1:
輸入: "the sky is blue"
輸出:?"blue is sky the"
示例 2:
輸入: " ?hello world! ?"
輸出:?"world! hello"
解釋: 輸入字符串可以在前面或者后面包含多余的空格,但是反轉后的字符不能包括。
示例 3:
輸入: "a good ??example"
輸出:?"example good a"
解釋: 如果兩個單詞間有多余的空格,將反轉后單詞間的空格減少到只含一個。
?
說明:
無空格字符構成一個單詞。
輸入字符串可以在前面或者后面包含多余的空格,但是反轉后的字符不能包括。
如果兩個單詞間有多余的空格,將反轉后單詞間的空格減少到只含一個。
注意:本題與主站 151 題相同:https://leetcode-cn.com/problems/reverse-words-in-a-string/
代碼:
class?Solution?{
????public?String?reverseWords(String?s)?{
????????String?x?=?s.trim();
????????char?arr[]?=??s.toCharArray();
????????StringBuilder?sb?=?new?StringBuilder();
????????List<String>?list?=?new?ArrayList<>();
????????for(int?i=0;i<arr.length;i++)
????????{
????????????if(arr[i]!='?')
????????????{
????????????????sb.append(arr[i]);
????????????}
????????????if(i!=arr.length-1)
????????????{
????????????????if(arr[i]=='?'&&arr[i+1]!='?')
????????????????{
????????????????????String?t?=?sb.toString();
????????????????????list.add(t);
????????????????????sb?=?new?StringBuilder();
????????????????}
????????????}
????????????else
????????????{
????????????????String?t?=?sb.toString();
????????????????list.add(t);
????????????}
????????}
????????int?k?=list.size()-1;
????????sb?=?new?StringBuilder();
????????while(k>=0)
????????{
????????????sb.append('?');
????????????sb.append(list.get(k));
????????????k--;
????????}
????????return?sb.toString().trim();
????}
}
總結
以上是生活随笔為你收集整理的【剑指offer】面试题58 - I:翻转单词顺序(Java)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Leetcode--287. 寻找重复数
- 下一篇: 7-3 银行排队问题之单队列多窗口服务