给你一个字符串 target。
Alice 将会使用一种特殊的键盘在她的电脑上输入 target,这个键盘 只有两个 按键:
按键 1:在屏幕上的字符串后追加字符 'a'。
按键 2:将屏幕上字符串的 最后一个 字符更改为英文字母表中的 下一个 字符。例如,'c' 变为 'd','z' 变为 'a'。
注意,最初屏幕上是一个空字符串 "",所以她 只能 按按键 1。
请你考虑按键次数 最少 的情况,按字符串出现顺序,返回 Alice 输入 target 时屏幕上出现的所有字符串列表。
示例 1:
输入: target = "abc"
输出: ["a","aa","ab","aba","abb","abc"]
解释:
Alice 按键的顺序如下:
按下按键 1,屏幕上的字符串变为 "a"。
按下按键 1,屏幕上的字符串变为 "aa"。
按下按键 2,屏幕上的字符串变为 "ab"。
按下按键 1,屏幕上的字符串变为 "aba"。
按下按键 2,屏幕上的字符串变为 "abb"。
按下按键 2,屏幕上的字符串变为 "abc"。
示例 2:
输入: target = "he"
输出: ["a","b","c","d","e","f","g","h","ha","hb","hc","hd","he"]
python
class Solution:
def stringSequence(self, target: str) -> List[str]:
result = []
current_string = ""
# 按键1:添加字符 'a'
for i in range(len(target)):
while len(current_string)<i+1:
current_string += 'a'
result.append(current_string)
# 按键2:更新当前字符串的最后一个字符
while current_string[-1] != target[i]:
current_string = current_string[:-1] +chr(ord(current_string[-1])+1)
result.append(current_string)
return result
-
字符与ASCII码值的对应关系 :在计算机中,每个字符都有一个对应的ASCII码值。例如,
'a'
的ASCII码值是97,'b'
的ASCII码值是98,以此类推。 -
递增字符 :当我们需要将一个字符递增时,实际上是将其对应的ASCII码值加1,然后再将这个新的ASCII码值转换回对应的字符。例如,如果当前字符是
'a'
(ASCII码值97),加1后变成98,对应的字符就是'b'
。 -
实现递增操作 :在这段代码中,
ord(current_string[-1])
获取当前字符串current_string
的最后一个字符的ASCII码值,然后加1,得到下一个字符的ASCII码值。chr()
函数将这个新的ASCII码值转换回对应的字符。 -
替换最后一个字符 :
current_string[:-1]
获取current_string
除了最后一个字符之外的所有字符。将这个子字符串与新字符拼接起来,就实现了将最后一个字符替换为下一个字符的操作。