LeetCode: 翻轉(zhuǎn)字符串里的單詞

翻轉(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();
   }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容