01-11 51—55


51、把 aaabbcccd 這種形式的字符串壓縮成 a3b2c3d1 這種形式。

b={}
c=""
a="aaabbcccd"
for i in a:
    b[i]=b.get(i,0)+1
for i,t in b.items():
    c+=str(i)
    c+=str(t)
print(c)

52、Python 一個數如果恰好等於它的因子之和,這個數就稱為"完數"。例如6=1+2+3.編程找出 1000 以內的所有完數。

from functools import reduce


def sum(a, b):
    return a + b


for i in range(2, 1001):
    l = [1]
    for j in range(2, int(i / 2 + 1)):
        if i % j == 0:
            l.append(j)
    if i == reduce(sum, l):
        print(i)
        print(l)

53、給你一個字符串,比如‘abc’,請打印出該字符串的所有排列組合:

以‘abc’為例,輸出的結果應該是:'abc', 'acb', 'bac', 'bca', 'cab', 'cba'

def perm(s=''):
    if len(s) <= 1:
        return [s]
    sl = []  
    for i in range(len(s)):  
        for j in perm(s[0:i] + s[i + 1:]):  
            sl.append(s[i] + j)  
    return sl


def main():
    perm_nums = perm('abb')  
    no_repeat_nums = list(set(perm_nums))  # 去重
    print('perm_nums', len(perm_nums), perm_nums)
    print('no_repeat_nums', len(no_repeat_nums), no_repeat_nums)
    pass


if __name__ == '__main__':
    main()

54、執行以下代碼段后,x 的值為

x = 10
x += x
x -= x - x
print(x)

"""
20
"""

55、對於一個非空字符串,判斷其是否可以有一個子字符串重復多次組成,字符串 只包含小寫字母且長度不超過 10000

示例 1:

\1. 輸入"abab"
\2. 輸出True
\3. 樣例解釋: 輸入可由"ab"重復兩次組成

示例 2:

\1. 輸入"abcabcabc"
\2. 輸出True
\3. 樣例解釋: 輸入可由"abc"重復三次組成

示例 3:
\1. 輸入"aba"

\2. 輸出False

class Solution(object):
    def repeatedSubstringPattern(self, s):
        """
        :type s: str
        :rtype: bool
        """
        n = len(s)
        for i in range(1, n // 2 + 1):
            if n % i == 0:
                a = s[:i]
                j = i
                while j < n and s[j:j + i] == a:
                    j += i
                if j == n: return True

        return False


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM