01-11 51—55
______egon新书python全套来袭请看:https://egonlin.com/book.html
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