给你一个字符串 target
。
Alice 将会使用一种特殊的键盘在她的电脑上输入 target
,这个键盘 只有两个按键:
按键 1:在屏幕上的字符串后追加字符 ‘a’。
按键 2:将屏幕上字符串的 最后一个 字符更改为英文字母表中的 下一个 字符。例如,’c’ 变为 ‘d’,’z’ 变为 ‘a’。
注意,最初屏幕上是一个空字符串 “”,所以她 只能 按按键 1。
请你考虑按键次数 最少
的情况,按字符串出现顺序,返回 Alice 输入 target 时屏幕上出现的所有字符串列表。
模拟就行了,不过我写的有点蠢1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20from typing import List
class Solution:
def stringSequence(self, target: str) -> List[str]:
ans = ["a"]
alphabet_list = [chr(i) for i in range(ord('a'), ord('z') + 1)]
for i, s in enumerate(target):
length = int(ord(s) - ord('a'))
lst_word = ans[-1]
if i == 0 and length == 0:
continue
if i == 0 and length != 0:
for i in range(1, length+1):
change_alpha = alphabet_list[i]
ans.append(change_alpha)
continue
for i in range(length+1):
append_words = lst_word + alphabet_list[i]
ans.append(append_words)
return ans
看题解之后比较简洁的写法1
2
3
4
5
6
7
8
9class Solution:
def stringSequence(self, target: str) -> List[str]:
ans = []
s = []
for c in target:
s.append('')
for s[-1] in ascii_lowercase[:ord(c) - ord('a') + 1]:
ans.append(''.join(s))
return ans