国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

劍指 Offer 58 - I. 翻轉(zhuǎn)單詞順序

這篇具有很好參考價值的文章主要介紹了劍指 Offer 58 - I. 翻轉(zhuǎn)單詞順序。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

劍指 Offer 58 - I. 翻轉(zhuǎn)單詞順序

解法一

不用內(nèi)置方法

  1. 去除首尾空格和中間多余空格
  2. 翻轉(zhuǎn)所有字符
  3. 翻轉(zhuǎn)每個單詞
class Solution {
    public String reverseWords(String s) {
        // 去除首尾空格和中間多余空格
        char[] ch = trim(s);
        // 翻轉(zhuǎn)所有字符
        reverse(ch, 0, ch.length - 1);
        // 翻轉(zhuǎn)每個單詞
        reverseWord(ch);
        return new String(ch);
    }

    char[] trim(String s){
        StringBuilder sb = new StringBuilder();
        int l = 0, r = s.length() - 1;
        while(l <= r && s.charAt(l) == ' ') l++;
        while(l <= r && s.charAt(r) == ' ') r--;
        for(int i = l; i <= r; i++){
            if(s.charAt(i) != ' ') sb.append(s.charAt(i));
            else {
                if(s.charAt(i + 1) != ' ') sb.append(' ');  // 只加入連續(xù)空格的最后一個
            }
        } 
        return sb.toString().toCharArray(); 
    }

    void reverseWord(char[] ch){
        int l = 0, r = 0;
        while(r < ch.length){
            while(r < ch.length && ch[r] != ' ') r++;
            reverse(ch, l, r - 1);
            l = r + 1;
            r = r + 1;
        }
    }

    void reverse(char[] ch, int l, int r){
        while(l < r){
            char tmp = ch[l];
            ch[l] = ch[r];
            ch[r] = tmp;
            l++;
            r--;
        }
    }
}

解法二

用自帶的 trim()substring(),要自己實現(xiàn)這兩個方法也很簡單。文章來源地址http://www.zghlxwxcb.cn/news/detail-669905.html

class Solution {
    public String reverseWords(String s) {
        s = s.trim();  // 刪除首尾空格
        int j = s.length() - 1, i = j;
        StringBuilder res = new StringBuilder();
        while(i >= 0){
            while(i >= 0 && s.charAt(i) != ' ') i--;  // 搜索首個空格
            res.append(s.substring(i + 1, j + 1) + " ");  // 添加單詞
            while(i >= 0 && s.charAt(i) == ' ') i--;  // 跳過單詞間空格
            j = i;  // j 指向下個單詞的尾字符
        }
        return res.toString().trim();  // 轉(zhuǎn)化為字符串并返回
    }
}

到了這里,關(guān)于劍指 Offer 58 - I. 翻轉(zhuǎn)單詞順序的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 劍指 Offer 56 - I. 數(shù)組中數(shù)字出現(xiàn)的次數(shù)

    劍指 Offer 56 - I. 數(shù)組中數(shù)字出現(xiàn)的次數(shù)

    理想的人物不僅要在物質(zhì)需要的滿足上,還要在精神旨趣的滿足上得到表現(xiàn)。? ? ? ? —— 黑格爾 目錄 方法1:排序+指針 方法2:異或整個數(shù)組 題目: 一個整型數(shù)組? nums ?里除兩個數(shù)字之外,其他數(shù)字都出現(xiàn)了 兩次 。請寫程序找出這兩個 只出現(xiàn)一次的數(shù)字。 要求時間復(fù)

    2023年04月16日
    瀏覽(21)
  • 力扣 [344、541、劍指offer 05.、151、劍指offer58-ll]

    力扣 [344、541、劍指offer 05.、151、劍指offer58-ll]

    雙指針:自己的 雙指針,左指針指向開頭,右指針指向末尾。 交換兩個左右指針。 左右指針向中間移動。 時間復(fù)雜度:O(n); 空間復(fù)雜度:O(1); 實現(xiàn)代碼: 分類討論:自己的 分類討論: 如果剩余字符少于k個,則將剩余字符全部反轉(zhuǎn)。 如果剩余字符大于或等于k個,則反

    2024年02月15日
    瀏覽(23)
  • 劍指 Offer 53 - I. 在排序數(shù)組中查找數(shù)字 I

    劍指 Offer 53 - I. 在排序數(shù)組中查找數(shù)字 I

    題目來源 劍指 Offer 53 - I. 在排序數(shù)組中查找數(shù)字 I 初始化: 左邊界 i=0 ,右邊界 j=nums.length?1。 循環(huán)二分: 當閉區(qū)間 [i, j] 無元素時跳出; 計算中點 m=(i+j)/2 (向下取整); 若 nums[m]target,則 target 在閉區(qū)間 [m+1,j] 中,因此執(zhí)行 i=m+1; 若 nums[m]target,則 target 在閉區(qū)間 [i,m?

    2024年02月01日
    瀏覽(22)
  • (動態(tài)規(guī)劃) 劍指 Offer 10- I. 斐波那契數(shù)列 ——【Leetcode每日一題】

    (動態(tài)規(guī)劃) 劍指 Offer 10- I. 斐波那契數(shù)列 ——【Leetcode每日一題】

    難度:簡單 寫一個函數(shù),輸入 n ,求斐波那契(Fibonacci)數(shù)列的第 n 項(即 F(N) )。斐波那契數(shù)列的定義如下: F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N 1. 斐波那契數(shù)列由 0 和 1 開始,之后的斐波那契數(shù)就是由之前的兩數(shù)相加而得出。 答案需要取模 1e9+7(1000000007),如計

    2024年02月12日
    瀏覽(20)
  • Leetcode-每日一題【劍指 Offer 32 - I. 從上到下打印二叉樹】

    Leetcode-每日一題【劍指 Offer 32 - I. 從上到下打印二叉樹】

    從上到下打印出二叉樹的每個節(jié)點,同一層的節(jié)點按照從左到右的順序打印。 例如: 給定二叉樹:? [3,9,20,null,null,15,7] , ??? 3 ?? / ? 9? 20 ??? /? ?? 15?? 7 返回: [3,9,20,15,7] 提示: 節(jié)點總數(shù) = 1000 1.題目要求我們從上到下打印出二叉樹的每個節(jié)點,同一層的節(jié)點按照從左

    2024年02月12日
    瀏覽(22)
  • (樹) 劍指 Offer 32 - I. 從上到下打印二叉樹 ——【Leetcode每日一題】

    (樹) 劍指 Offer 32 - I. 從上到下打印二叉樹 ——【Leetcode每日一題】

    難度:中等 從上到下打印出二叉樹的每個節(jié)點,同一層的節(jié)點按照從左到右的順序打印。 例如: 給定二叉樹: [3,9,20,null,null,15,7], 返回: 提示 : 節(jié)點總數(shù) = 100 ??思路:BFS 使用 優(yōu)先隊列 進行 層序遍歷 即可! ??代碼:(C++、Java) C++ Java ?? 運行結(jié)果: ?? 復(fù)雜度分析: 時間

    2024年02月14日
    瀏覽(22)
  • 劍指Offer--05替換空格&&58左旋字符串

    劍指Offer--05替換空格&&58左旋字符串

    題目是這樣的 意思是將字符串s中的空格替換為字符串\\\"%20\\\",如果只是替換一個字符還好,可以在原數(shù)組直接替換,但是是將空格替換為字符串,所以再在原數(shù)組上替換,原數(shù)組原內(nèi)容會被覆蓋,且長度大小不夠,所以此時要動態(tài)開辟一個字符數(shù)組,這個數(shù)組開多大?考慮最壞

    2024年02月06日
    瀏覽(22)
  • LeetCode:劍指 Offer 58 - II. 左旋轉(zhuǎn)字符串

    LeetCode:劍指 Offer 58 - II. 左旋轉(zhuǎn)字符串

    ??道阻且長,行則將至。?? ??算法,不如說它是一種思考方式?? 算法專欄: ????123 題目描述 :字符串的左旋轉(zhuǎn)操作是把字符串前面的若干個字符轉(zhuǎn)移到字符串的尾部。請定義一個函數(shù)實現(xiàn)字符串左旋轉(zhuǎn)操作的功能。比如,輸入字符串\\\"abcdefg\\\"和數(shù)字2,該函數(shù)將返回左旋

    2024年02月02日
    瀏覽(24)
  • 劍指 Offer 59 - I. 滑動窗口的最大值 / LeetCode 239. 滑動窗口最大值(優(yōu)先隊列 / 單調(diào)隊列)

    鏈接:劍指 Offer 59 - I. 滑動窗口的最大值;LeetCode 239. 滑動窗口最大值 難度:困難 下一篇:劍指 Offer 59 - II. 隊列的最大值(單調(diào)隊列) 給你一個整數(shù)數(shù)組 nums,有一個大小為 k 的滑動窗口從數(shù)組的最左側(cè)移動到數(shù)組的最右側(cè)。你只可以看到在滑動窗口內(nèi)的 k 個數(shù)字?;瑒哟?/p>

    2024年02月15日
    瀏覽(21)
  • 每天一道leetcode:劍指 Offer 53 - I. 在排序數(shù)組中查找數(shù)字 I(適合初學者&二分查找)

    每天一道leetcode:劍指 Offer 53 - I. 在排序數(shù)組中查找數(shù)字 I(適合初學者&二分查找)

    統(tǒng)計一個數(shù)字在排序數(shù)組中出現(xiàn)的次數(shù)。 0 = nums.length = 10^5 -10^9 = nums[i] = 10^9 nums 是一個非遞減數(shù)組 -10^9 = target = 10^9 使用兩次二分查找找到target在數(shù)組中的左右邊界,然后長度就是右邊界減去左邊界再加一,最后返回長度即可。 ? 歡迎大家在評論區(qū)討論,如有不懂的代碼部分

    2024年02月14日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包