有一道面试题: 一个字符串"Yes", 用代码实现,输出其全部大小写组合,
比如说字符串"no"则输出['no', 'No', 'nO', 'NO']
想到了如下的几种解法:
方法一:借助于itertools.combinations
# coding = utf -8
def handle_string(src=""):
from itertools import combinations
res = ""
for char in src:
res += char.upper() + char.lower()
words = list(combinations(list(res), 3))
for i in range(len(src)):
words = ["".join(item) for item in filter(lambda x:x[i].lower() == src[i].lower(), words)]
return words
if __name__ == "__main__":
print(handle_string("Yes"))
方法二:借助于random模块
# coding = utf -8
def handle_string(src=""):
import random
sl = src.lower()
su = src.upper()
sa = ["".join(list(x+y)) for (i, x) in enumerate(sl) for (j, y) in enumerate(su) if i == j]
temp = []
lens = 2 ** len(src)
while True:
item = "".join(random.choice(i) for i in sa)
if item not in temp:
temp.append(item)
if len(temp) == lens:
break
return temp
if __name__ == "__main__":
print(handle_string("Yes"))