【邊學邊敲邊記】LeetCode013:反轉字符串中的單詞 III

【邊學邊敲邊記】LeetCode013:反轉字符串中的單詞 III

1、寫在前面

LeetCode 第十二題反轉字符串傳輸門:LeetCode012 : 反轉字符串
今天給你們分享的是LeetCode 數組與字符串 第十三題:反轉字符串中的單詞 III,爲面試而生,期待你的加入。python

「Use the utility in the API is recommended in the project. But if you use it in an interview, you will definitely fail .」

2、今日題目

給定一個字符串,你須要反轉字符串中每一個單詞的字符順序,同時仍保留空格和單詞的初始順序。面試

示例:

輸入: "Let's take LeetCode contest"
輸出: "s'teL ekat edoCteeL tsetnoc"

注意:

在字符串中,每一個單詞由單個空格分隔,而且字符串中不會有任何額外的空格。數組

3、 分析

這個題目,看到第一眼,感受有點難,我一看到題目,還覺得是一個字符串裏有英文單詞,只用識別英文單詞,而後把英文單詞逆轉就好,後來仔細一看,是一段只由英文單詞和空格組成的字符串,這樣的話,就簡單了不少,具體思路以下圖所述:圖片微信

【邊學邊敲邊記】LeetCode013:反轉字符串中的單詞 III

4、解題

1.快捷的方法:markdown

時間複雜度:O(n)
畢竟仍是得把每一個單詞都遍歷一遍~app

class Solution(object):
    def reverseWords(self, s):
        """
        :type s: str
        :rtype: str
        """
        # 根據空格,把字符串分隔開
        r_list = s.split(" ")

        # 把列表每一個單詞字符串逆轉
        for i in range(len(r_list)):
            r_list[i] = r_list[i][::-1]

        # 用 「 」 鏈接列表的每一個單詞
        result_s = " ".join(r_list)
        return result_s

(1)切片/join操做,前一篇Python小知識 | 這些技能你不會?(一)有較詳細介紹。ide

(2)split函數介紹
Python split((str, num) 經過指定分隔符對字符串進行切片,若是參數 num 有指定值,則僅分隔 num 個子字符串。
參數介紹:函數

str -- 分隔符,默認爲全部的空字符,包括空格、換行(\n)、製表符(\t)等。
num -- 分割次數。

(3)提交結果學習

【邊學邊敲邊記】LeetCode013:反轉字符串中的單詞 III
提交結果測試

測試數據:30組
運行時間:32ms
擊敗人百分比:94.56%

2.本身動手,豐衣食足?

遍歷,分組都本身動手實現
時間複雜度:O(n)

class Solution1(object):
    def reverseWords(self, s):
        """
        :type s: str
        :rtype: str
        """
        # 根據空格,把字符串分隔開
        s = s + ' '
        r_list = []
        word = ''
        flag = 0
        for i in s:
            if i != " ":
                word = word + i
                flag = 1
            else:
                if flag == 1:
                    r_list.append(word)
                    word = ''
                    flag = 0

        # 把列表每一個單詞字符串逆轉
        for i in range(len(r_list)):
            r_list[i] = self.reverseString(r_list[i])

        # 用 「 」 鏈接列表的每一個單詞
        result_s = ''
        for i in range(len(r_list)):
            if i == len(r_list)-1:
                result_s = result_s + r_list[i]
                break
            result_s = result_s + r_list[i] + " "

        return result_s

    # leetcode12中本身實現字符串逆轉
    def reverseString(self, s):
        """
        :type s: str
        :rtype: str
        """
        result = list(s)
        for i in range(len(result)//2):
            temp = result[len(result)-i-1]
            result[len(result)-i-1] = result[i]
            result[i] = temp
        return ''.join(result)
  • 提交結果
    【邊學邊敲邊記】LeetCode013:反轉字符串中的單詞 III
    提交結果

    測試數據:30組
    運行時間:204ms
    擊敗人百分比:2.89%

雖然beat的人很少,但我有想法,我驕傲啊~
感受很酷,感受很努力,現實很殘酷,有沒有這種感受?

5、疑惑

昨天立冬,天氣是真的變冷了,你們要記得多穿衣服,別感冒哦~
不要忘記學習,不要忘記學習,不要忘記學習。

最近廣告[互推和廣告]有點多,乾貨比較少,但願你們諒解,說幾點感悟:
第一,互推,爲了公衆號能越作越好,必不可少的,我的的能力有限,不能每一篇文章都是爆文,因此見諒,並且我通常互推也都是python公衆號,都是作公衆號認識的朋友,因此才誠心推薦給你們的;

第二,接商業廣告,學生黨,花時間運營公衆號不簡單,作一篇推文可能花的5,6個小時,剛開始花兩三天也是常有的事,生活不易,有合適的,不錯的廣告商,每個廣告商我都是深刻了解了的,至少沒有騙錢圈錢的機構,這樣賺點生活費,我以爲不爲過吧;

第三,關於文末雞腿,點贊,轉發,留言的事情,的確少的可憐,因此但願你們之後點開推文多幫幫忙,點一下,你們多互動,個人學習積極性也高些,可能這篇推文你學到的不多,說不定下篇就能學不少了呢?

第四,交流羣,目前主要我一我的管理,還有一個研二的學長幫忙看一個羣,忙不過來,回答你們問題慢了,也不要見怪,想加羣的加我微信:zs820553471。

但願多多支持,在公衆號上,要是說100%的心,我只能給你們50%,這50%無私分享學習,交流,剩下的50%,怪我,被利益和生活燻黑了。

6、結語

堅持 and 努力 : 終有所獲。
【邊學邊敲邊記】LeetCode013:反轉字符串中的單詞 III

END
往期精彩
LeetCode012:反轉字符串
從00-90後的微信暱稱,發現以下規律。。。
用python對你的微信進行騷操做
爬取《悲傷逆流成河》貓眼信息 | 郭敬明五年電影最動人之做
進學習交流羣
不失聯,掃碼加X先生微信學習交流
【邊學邊敲邊記】LeetCode013:反轉字符串中的單詞 III
【邊學邊敲邊記】LeetCode013:反轉字符串中的單詞 III
舒適提示
歡迎你們轉載,轉發,留言,點贊支持X先生。
文末廣告點一下也是對X先生莫大的支持。
作知識的傳播者,隨手轉發。


更多精彩推薦,請關注咱們

【邊學邊敲邊記】LeetCode013:反轉字符串中的單詞 III攢點錢買棉衣

相關文章
相關標籤/搜索