翻轉(zhuǎn)字符串里的單詞
題目敘述
給定一個(gè)字符串,逐個(gè)翻轉(zhuǎn)字符串中的每個(gè)單詞。
示例:
輸入: "the sky is blue",
輸出: "blue is sky the".
說明:
- 無(wú)空格字符構(gòu)成一個(gè)單詞。
- 輸入字符串可以在前面或者后面包含多余的空格,但是反轉(zhuǎn)后的字符不能包括。
- 如果兩個(gè)單詞間有多余的空格,將反轉(zhuǎn)后單詞間的空格減少到只含一個(gè)。
解題思路:
這一道題站在Java的角度上來說比較簡(jiǎn)單實(shí)現(xiàn),也就是將原字符串根據(jù)" "開始進(jìn)行分割成為一個(gè)字符串?dāng)?shù)組,開始對(duì)數(shù)組從后往前進(jìn)行遍歷,因?yàn)樵趩卧~可能有多個(gè)" ",因此在字符串進(jìn)行調(diào)用trim()函數(shù)(它的作用也就是將字符串中的頭和尾部的空格去掉),之后如果字符串不為空說明它是一個(gè)單詞添加進(jìn)結(jié)果集中即可,C語(yǔ)言實(shí)現(xiàn)的可以自己實(shí)現(xiàn)一下這個(gè)方法就好了。按" "分割也可以使用C語(yǔ)言自己實(shí)現(xiàn)就好了。這一道題比較簡(jiǎn)單。時(shí)間復(fù)雜度是O(n)。
代碼實(shí)現(xiàn):
public class Solution {
public String reverseWords(String s) {
StringBuffer res=new StringBuffer();
if (s==null||s.trim().length()==0){
return res.toString();
}
List<String> list=new ArrayList<>();
String[] strs=s.split(" ");
for (int i=strs.length-1;i>-1;--i){
if (strs[i].trim().length()>0){
list.add(strs[i].trim());
}
}
res.append(list.get(0));
for (int i=1;i<list.size();++i){
res.append(" ");
res.append(list.get(i));
}
return res.toString();
}
}