题目来自力扣3330. 找到初始输入字符串 I - 力扣(LeetCode)
记录每日刷题学习过程,如有侵权问题,联系作者删除。
欢迎有意向的同学们交流学习。
一、题目描述
Alice 正在她的电脑上输入一个字符串。但是她打字技术比较笨拙,她 可能 在一个按键上按太久,导致一个字符被输入 多次 。
尽管 Alice 尽可能集中注意力,她仍然可能会犯错 至多 一次。
给你一个字符串 word
,它表示 最终 显示在 Alice 显示屏上的结果。
请你返回 Alice 一开始可能想要输入字符串的总方案数。
示例1:
输入:word = "abbcccc"
输出:5
解释:
可能的字符串包括:
"abbcccc"
,"abbccc"
,"abbcc"
,"abbc"
和"abcccc"
。
示例2:
输入:word = "abcd"
输出:1
解释:
唯一可能的字符串是
"abcd"
。
示例3:
输入:word = "aaaa"
输出:4
二、思路笔记
题目要求中的输入犯错至多只有一次,且错误可能是一个键出现多次。
遍历word, 当word[i] == word[i-1]的时候,证明此处可能是出现错误的地方,此时最终的总方案数+1,知道遍历持续至字符串结尾。
此题不能通过直接set去重的方式求得,因为字符串可能出现aba的形式,此时的a并不属于可能重复的类型。
三、代码
class Solution:
def possibleStringCount(self, word: str) -> int:
num = 0
for i in range(1, len(word)):
if word[i] == word[i - 1]:
num += 1
return num + 1