LeetCode初級演算法的Python實現--字串

來源:互聯網
上載者:User

標籤:leetcode   imp   公用首碼   result   迴文   []   port   get   整數   

LeetCode初級演算法的Python實現--字串
# 反轉字串def reverseString(s):    return s[::-1]# 顛倒數字def reverse(x):    if x < 0:        flag = -2 ** 31        result = -1 * int(str(x)[1:][::-1])        if result < flag:            return 0        else:            return result    else:        flag = 2 ** 31 - 1        result = int(str(x)[::-1])        if result > flag:            return 0        else:            return result# 字串中的第一個唯一字元def firstUniqChar(s):    d = {}    for i in range(len(s)):        d[s[i]] = d.get(s[i], 0) + 1    for i in range(len(s)):        if d[s[i]] == 1:            return i    return -1# 有效字母異位詞def isAnagram(s, t):    if len(t) != len(s):        return False    if len(set(t)) != len(set(s)):        return False    for ex in set(t):        if s.count(ex) != t.count(ex):            return False    return True# 驗證迴文字串def isPalindrome(s):    import re    s = s.lower()    newS = re.sub(r‘[^A-Za-z0-9]‘, "", s)    if newS[::-1] == newS:        return True    else:        return False# 字串轉整數(atoi)def myAtoi(str):    import re    if re.match(‘\s+‘, str) != None:        a, b = re.match(‘\s+‘, str).span()        str = str[b:]    if str == ‘‘:        return 0    flag = True    if str[0] == ‘-‘:        str = str[1:]        flag = False    elif str[0] == ‘+‘:        str = str[1:]    if re.match(‘\d+‘, str) != None:        a, b = re.match(‘\d+‘, str).span()        str = str[a:b]        if flag == True:            if int(str) > 2 ** 31 - 1:                return 2 ** 31 - 1            return int(str)        else:            if -1 * int(str) < -2 ** 31:                return -2 ** 31            return -1 * int(str)    else:        return 0# 實現 strStr() 函數。def strStr(haystack, needle):    if len(needle) == 0:        return 0    for i in range(len(haystack) - len(needle) + 1):        if haystack[i:i + len(needle)] == needle:            return i    return -1# 數數並說def countAndSay(n):    keyStr = ‘1‘  # 從1開始    for i in range(n - 1):  # 迴圈n次        newStr = ""  # 儲存新的字元        strList = []  # 迴圈一個字串下來擷取每個字元的個數        sList = []  # 相同字元的個數        flag = True        for j in range(len(keyStr) - 1):  # 迴圈字元的長度減一 flag表示預設最後一個字元和前面一個字元不同,            sList.append(keyStr[j])            sList.append(1)            if keyStr[j] == keyStr[j + 1]:  # 如果當前位置的字元和下一個位置的字元相同                sList[1] += 1                flag = False            else:                strList.append(sList)  # 不同的話 將上一個字元的情況儲存進列表                sList = []                flag = True        if flag:  # 如果最後一個字元和前一個字元不同,則將字元情況加入            strList.append([keyStr[-1], 1])        else:            if sList != []:  # 最後一串相同字元加入列表                strList.append(sList)        for k in range(len(strList)):  # 將列表的字元按順序取出            newStr = newStr + ‘‘ + str(strList[k][1])            newStr = newStr + ‘‘ + strList[k][0]        keyStr = newStr    return keyStr# 最長公用首碼def longestCommonPrefix(strs):    if strs == []:        return ‘‘    lenKey = len(strs[0])    key = 0    longest = 0    for i in range(1, len(strs)):        if len(strs[i]) < lenKey:            key = i            lenKey = len(strs[i])    for i in range(len(strs[key])):        flag = True        for j in range(len(strs)):            if strs[j][i] != strs[key][i]:                flag = False        if flag:            longest += 1        else:            break    return strs[key][0:longest]

LeetCode初級演算法的Python實現--字串

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.