最小击键次数 Python 计算器问题
Minimum Keystrokes Python Calculator Problem
我无法计算您必须按键盘键入特定字符串的最少次数。规则如下:
- 您键入的每个字母都算作 1 次击键
- 激活大写锁定计为 1 次击键
- 停用大写锁定计为 1 次击键
- 按 shift 键计为 1 次击键
- 您不能按住 shift 键超过一个字母
- 您需要编写一个函数,接收一个字符串和returns键入该字符串所需的最少击键次数(整数)
我在尝试在 Python 中对此进行编码时遇到了一些小问题。
到目前为止我的代码:
def getAns(string):
uppercase_count = 0
keystrokes = 0
for i in range(len(string)):
if string[i] == string[i].upper():
uppercase_count += 1
if uppercase_count == 1:
keystrokes += 1
else:
if uppercase_count > 1:
keystrokes += 1
uppercase_count = 0
keystrokes += 1
return keystrokes
测试字符串:
"EWlweWXZXxcscSDSDcccsdcfdsFvccDCcDCcdDcGvTvEEdddEEddEdEdAs"
我的函数返回 79 而不是 78,它应该是。我在我的逻辑中找不到任何问题。有人可以帮助我吗?
这是正确的答案代码,但我不明白其中的区别
def getAns(self, s):
if not s:
return 0
cap = 0
res = 0
chars = ["abcdefghijklmnopqrstuvwxyz", "ABCDEFGHIJKLMNOPQRSTUVWXYZ"]
for i,c in enumerate(s):
if c in chars[cap]:
res+=1
else:
t = abs(cap - 1)
if i+1 < len(s) and s[i+1] in chars[t]:
cap = t
res+=2
return res
当您将输入字符串缩减为 最小 子字符串而您仍然 得到不同的输出时,您将识别此子字符串:
"DCcD"
对于此输入,您的函数将 return 7,而正确的代码 returns 6.
您的函数识别此序列:
大写字母打开 D C 大写字母关闭 c Shift+D = 7
但是......它来了......正确的解决方案确定了这个序列:
Caps ON D C Shift +c D = 6
考虑到您可以使用Shift 当 CAPS-LOCK 开启时,这将产生一个小写字母!
我无法计算您必须按键盘键入特定字符串的最少次数。规则如下:
- 您键入的每个字母都算作 1 次击键
- 激活大写锁定计为 1 次击键
- 停用大写锁定计为 1 次击键
- 按 shift 键计为 1 次击键
- 您不能按住 shift 键超过一个字母
- 您需要编写一个函数,接收一个字符串和returns键入该字符串所需的最少击键次数(整数)
我在尝试在 Python 中对此进行编码时遇到了一些小问题。 到目前为止我的代码:
def getAns(string):
uppercase_count = 0
keystrokes = 0
for i in range(len(string)):
if string[i] == string[i].upper():
uppercase_count += 1
if uppercase_count == 1:
keystrokes += 1
else:
if uppercase_count > 1:
keystrokes += 1
uppercase_count = 0
keystrokes += 1
return keystrokes
测试字符串:
"EWlweWXZXxcscSDSDcccsdcfdsFvccDCcDCcdDcGvTvEEdddEEddEdEdAs"
我的函数返回 79 而不是 78,它应该是。我在我的逻辑中找不到任何问题。有人可以帮助我吗?
这是正确的答案代码,但我不明白其中的区别
def getAns(self, s):
if not s:
return 0
cap = 0
res = 0
chars = ["abcdefghijklmnopqrstuvwxyz", "ABCDEFGHIJKLMNOPQRSTUVWXYZ"]
for i,c in enumerate(s):
if c in chars[cap]:
res+=1
else:
t = abs(cap - 1)
if i+1 < len(s) and s[i+1] in chars[t]:
cap = t
res+=2
return res
当您将输入字符串缩减为 最小 子字符串而您仍然 得到不同的输出时,您将识别此子字符串:
"DCcD"
对于此输入,您的函数将 return 7,而正确的代码 returns 6.
您的函数识别此序列:
大写字母打开 D C 大写字母关闭 c Shift+D = 7
但是......它来了......正确的解决方案确定了这个序列:
Caps ON D C Shift +c D = 6
考虑到您可以使用Shift 当 CAPS-LOCK 开启时,这将产生一个小写字母!