日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

leetcode 151. 翻转字符串里的单词

發布時間:2025/5/22 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 leetcode 151. 翻转字符串里的单词 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

難度:中等
頻次:69

題目:
給你一個字符串 s ,逐個翻轉字符串中的所有 單詞 。

單詞 是由非空格字符組成的字符串。s 中使用至少一個空格將字符串中的 單詞 分隔開。

請你返回一個翻轉 s 中單詞順序并用單個空格相連的字符串。

說明:

輸入字符串 s 可以在前面、后面或者單詞間包含多余的空格。
翻轉后單詞間應當僅用一個空格分隔。
翻轉后的字符串中不應包含額外的空格。

解題思路:一次遍歷(倒序+標記位置+截取)

注意

  • 遍歷的時候分成兩種形式,第一種是遍歷跳過空格,直到非空格的位置,一種是遍歷非空格,直到是空格的位置
  • 兩次遍歷的順序,最好是i先遍歷非空格,再遍歷空格,這樣子不用去考慮到開頭是否有空格的特俗情況,如果是先遍歷空格,再遍歷非空格,那么最后i=j的情況,而且這個時候不去處理就會多出一個空格
  • String的函數需要注意
    • s.charAt();
    • s.substring(i,j);[i,j),包括i,不包括j
    • s.toString();
    • s.toCharArray();

代碼

先遍歷字母,再遍歷非空格
class Solution {public String reverseWords(String s) {int len=s.length();int i=len-1;StringBuffer sb=new StringBuffer();while(i>=0){int j=i;//i的下標移動到第一個空格處while(i>=0&&s.charAt(i)!=' ') i--;//如果結果集里有東西,添加空格if(sb.length()>0) sb.append(" ");//裁剪[i+1,j]sb.append(s.substring(i+1,j+1));//移動i到后面不為空格處while(i>=0&&s.charAt(i)==' ') i--;}return sb.toString();} }
先遍歷空格,再遍歷字母
class Solution {public String reverseWords(String s) {int len=s.length();int i=len-1;StringBuffer sb=new StringBuffer();while(i>=0){//i的下標移動到第一個非空格處while(i>=0&&s.charAt(i)==' ') i--;int j=i;//把i移動到空格處while(i>=0&&s.charAt(i)!=' ') i--;//如果結果集里有東西并且最后遍歷i!=j,添加空格if(sb.length()>0&&i!=j) sb.append(" ");//裁剪[i+1,j]sb.append(s.substring(i+1,j+1));}return sb.toString();} }

總結

以上是生活随笔為你收集整理的leetcode 151. 翻转字符串里的单词的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。