把半年前完全没思路的题解了的感觉真好
虽然处理了很多次索引思路,不过最后还是过了。第一眼就有解题思路,这种感觉真不错,要的就是这种打怪升级的正反馈。
附上解题代码
`#
@lc app=leetcode.cn id=2266 lang=python3
[2266] 统计打字方案数
@lc code=start
from collections import Counter
from functools import cache
class Solution:
def countTexts(self, pressedKeys: str) -> int:
MOD = 10**9 + 7
n = len(pressedKeys)
dp_3 = [0] * n
# 用于存储连续按同样数字时的情况
# 分为按键有四个字母和三个字母两种情况
dp_4 = [0] * n
if n >= 1:
dp_3[0] = 1
if n >= 2:
dp_3[1] = 2
if n >= 3:
dp_3[2] = 4
if n >= 1:
dp_4[0] = 1
if n >= 2:
dp_4[1] = 2
if n >= 3:
dp_4[2] = 4
if n >= 4:
dp_4[3] = 8
ans = 1
button_3 = {'2','3','4','5','6','8'}
button_4 = {'7','9'}
for i in range(3, n):
dp_3[i] = (dp_3[i - 1] + dp_3[i - 2] + dp_3[i - 3]) % MOD
for i in range(4, n):
dp_4[i] = (dp_4[i - 1] + dp_4[i - 2] + dp_4[i - 3] + dp_4[i - 4]) % MOD
count = 1
for i in range(1,n):
if pressedKeys[i] == pressedKeys[i - 1]:
count += 1
else:
if pressedKeys[i - 1] in button_3:
ans = (ans * dp_3[count - 1]) % MOD
else:
ans = (ans * dp_4[count - 1]) % MOD
count = 1
if pressedKeys[-1] in button_3:
ans = (ans * dp_3[count - 1]) % MOD
else:
ans = (ans * dp_4[count - 1]) % MOD
return ans`
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】