成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

LeetCode 151:給定一個(gè)字符串,逐個(gè)翻轉(zhuǎn)字符串中的每個(gè)單詞 Reverse Words i

red_bricks / 2362人閱讀

摘要:說明無空格字符構(gòu)成一個(gè)單詞。輸入字符串可以在前面或者后面包含多余的空格,但是反轉(zhuǎn)后的字符不能包括。我們將字符串轉(zhuǎn)為字符型數(shù)組并用兩個(gè)指針來解這道題。指針作為原字符串轉(zhuǎn)為字符數(shù)組的索引,從右向左移。

公眾號(hào):愛寫bug(ID:icodebugs)

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

Given an input string, reverse the string word by word.

示例 1:

輸入: "the sky is blue"
輸出: "blue is sky the"

示例 2:

輸入: "  hello world!  "
輸出: "world! hello"
解釋: 輸入字符串可以在前面或者后面包含多余的空格,但是反轉(zhuǎn)后的字符不能包括。

示例 3:

輸入: "a good   example"
輸出: "example good a"
解釋: 如果兩個(gè)單詞間有多余的空格,將反轉(zhuǎn)后單詞間的空格減少到只含一個(gè)。

說明:

無空格字符構(gòu)成一個(gè)單詞。

輸入字符串可以在前面或者后面包含多余的空格,但是反轉(zhuǎn)后的字符不能包括。

如果兩個(gè)單詞間有多余的空格,將反轉(zhuǎn)后單詞間的空格減少到只含一個(gè)。

進(jìn)階:

請(qǐng)選用 C 語言的用戶嘗試使用 O(1) 額外空間復(fù)雜度的原地解法。

Note:

A word is defined as a sequence of non-space characters.

Input string may contain leading or trailing spaces. However, your reversed string should not contain leading or trailing spaces.

You need to reduce multiple spaces between two words to a single space in the reversed string.

Follow up:

For C programmers, try to solve it in-place in O(1) extra space.

解題思路:

Java 字符串不支持運(yùn)算符重載,無法用原地解法。 我們將字符串轉(zhuǎn)為字符型數(shù)組并用兩個(gè)指針來解這道題。指針 i 作為原字符串轉(zhuǎn)為字符數(shù)組的索引,從右向左移。指針 j 作為新字符數(shù)組索引,從左向右賦值得到原數(shù)組 count 長(zhǎng)度的字符。count記錄遇到的字母數(shù)量,每次遇到 空格 字符,新數(shù)組得到從該空格字符 向右 count 個(gè)字符并刷新count 計(jì)數(shù)。

Java:
class Solution {
    public String reverseWords(String s) {
        if (s.length()==0)return s;//如果為空直接返回
        char strs[]=s.toCharArray(),ans[]=new char[s.length()];//字符串轉(zhuǎn)為char字符數(shù)組
        int count=0,j=0;//全局變量j記錄新數(shù)組索引
        for(int i=s.length()-1;i>=0;i--){指針i從右向左遍歷strs字符
            if(strs[i]==" "){//判斷是否為空格字符
                int k=i+1;
                if(count>0){
                    while (--count>=0){//從字符i向右count個(gè)字符賦給新數(shù)組ans
                        ans[j++]=strs[k++];
                    }
                    ans[j++]=" ";
                    count=0;//count初始化為0
                }
            }else if(i==0){
                for(;i<=count;i++)ans[j++]=strs[i];//左移到第一個(gè)字符時(shí)證明不是以空格開頭,則從0獲取count+1個(gè)個(gè)字符賦給ans
                j+=1;
                break;
            }
            else {
                count++;//如果是字母,則count累加1
            }
        }
        if(j<1)return "";//如果j依然是0,則原字符串全為空格,返回空字符串
        String string=String.valueOf(ans,0,j-1);//char數(shù)組轉(zhuǎn)為字符串返回
        return string;
    }
}

為了考慮性能,轉(zhuǎn)成了多個(gè)判斷,所以有些繁瑣。最終運(yùn)行:Your runtime beats 99.91 % of java submissions

Python3:

python完全可以實(shí)現(xiàn)Java的思路,不再復(fù)現(xiàn)。這里利用函數(shù)投機(jī)取巧:

split() ,它可以把傳入字符串剔除空格后返回 所有單詞的數(shù)組

join() ,它可以指定一個(gè)數(shù)組以特定字符為間隔,拼接成一個(gè)字符串

加上 [::-1] 反轉(zhuǎn)數(shù)組,一行代碼既可實(shí)現(xiàn)該題目要求

" abc  def  "            原字符串

["abc" , "def"] 剔除空格返回String型單詞數(shù)組

["def" , "abc"] 切片反轉(zhuǎn)數(shù)組

"def abc" 拼接成字符串

class Solution:
    def reverseWords(self, s: str) -> str:
        return " ".join(s.split()[::-1]) # 剔除所有空格字符返回?cái)?shù)組并反轉(zhuǎn),以空格為間隔把數(shù)組拼成字符串

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/75292.html

相關(guān)文章

  • LeetCode 151給定一個(gè)符串逐個(gè)翻轉(zhuǎn)符串中的每個(gè)單詞 Reverse Words i

    摘要:說明無空格字符構(gòu)成一個(gè)單詞。輸入字符串可以在前面或者后面包含多余的空格,但是反轉(zhuǎn)后的字符不能包括。我們將字符串轉(zhuǎn)為字符型數(shù)組并用兩個(gè)指針來解這道題。指針作為原字符串轉(zhuǎn)為字符數(shù)組的索引,從右向左移。 公眾號(hào):愛寫bug(ID:icodebugs) 翻轉(zhuǎn)字符串里的單詞 Given an input string, reverse the string word by word. 示例 1:...

    dongxiawu 評(píng)論0 收藏0
  • LeetCode 之 JavaScript 解答第151題 —— 反轉(zhuǎn)符串中的單詞

    摘要:小鹿題目翻轉(zhuǎn)字符串里的單詞給定一個(gè)字符串,逐個(gè)翻轉(zhuǎn)字符串中的每個(gè)單詞。說明無空格字符構(gòu)成一個(gè)單詞。遇到空格之后,將單詞進(jìn)行倒序拼接。消除尾部的空格。測(cè)試用例空字符串。中間空格大于的字符串。 Time:2019/4/20Title: Reverse Words In a StringDifficulty: MidumnAuthor: 小鹿 題目:Reverse Words In a ...

    betacat 評(píng)論0 收藏0
  • leetcode刷題筆記(2)(python)

    摘要:思路先用將字符串分割,再遍歷,將字符串內(nèi)每個(gè)單詞進(jìn)行翻轉(zhuǎn)代碼題意給定一個(gè)字符串,將字符串按照翻轉(zhuǎn),不翻轉(zhuǎn)的規(guī)則進(jìn)行處理。思路先將字符串分段,然后再根據(jù)段落進(jìn)行處理最后將字符串輸出。 344 Reverse String題意:給出一個(gè)字符串對(duì)字符串進(jìn)行翻轉(zhuǎn)(reverse)思路:直接使用切片函數(shù)進(jìn)行翻轉(zhuǎn)(網(wǎng)上看到的,具體怎么使用有點(diǎn)迷)[::-1]代碼:`class Solution(...

    Guakin_Huang 評(píng)論0 收藏0
  • leetcode 151. Reverse Words in a String

    摘要:題目要求講一個(gè)字符串中的單詞逆序輸出,單詞中字母順序不發(fā)生改變。其中,字符串首位的空格應(yīng)刪去,字符串中如果存在多余的空格,只需輸出一個(gè)空格。這里用到的正則表達(dá)式為也就是遇到一個(gè)或多個(gè)空白時(shí)斷句。 題目要求 Given an input string, reverse the string word by word. For example, Given s = the sky is ...

    yzd 評(píng)論0 收藏0
  • 翻轉(zhuǎn)符串的相關(guān)題目

    摘要:一題目描述空格分隔,逐個(gè)反轉(zhuǎn)二題目描述三題目描述當(dāng)然也可以用的做,不過用雙指針更快。 LeetCode: 557. Reverse Words in a String III 一、LeetCode: 557. Reverse Words in a String III 題目描述 Given a string, you need to reverse the order of chara...

    lykops 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<