求用户输入密码的时间问题
题目如下:

不考虑那么复杂场景,你们有什么解决思路,欢迎评论。
解决办法(python):
def counttime(pwd): keys=['azc', 'dwf', 'gti', 'jql', 'mon', 'pkr', 'shu' ,'vex', 'yb'] times=0 before='*' for p in pwd: for key in keys: if p in key: times+=key.index(p)+1 if before in key: times+=2 before=p break print(times) counttime(input("请输入小写密码"))
java版:
package basictest; public class demo1 { public static int countstep(String pwd) { String[] keys = { "azc", "dwf", "gti", "jql", "mon", "pkr", "shu", "vex", "yb" }; int count = 0; String beforeP = "0" ; for (int i = 0; i < pwd.length(); i++) { String singleP = String.valueOf(pwd.charAt(i)); for (String key : keys) { if (key.contains(singleP)) { count += key.indexOf(singleP) + 1; if (key.contains(beforeP)) { count += 2; } beforeP = singleP; break; } } } return count; } public static void main(String[] args) { System.out.println(countstep("ayb")); // 6 } }
大佬解决办法(python2.7):
keyboard = list("azcdwfgtijqlmonpkrshuvexyb") time_delta = 1 def get_wait_time(c, b): return int(2 * time_delta) if max(keyboard.index(c), keyboard.index(b)) <= (min(keyboard.index(c), keyboard.index(b))/3*3 + 2) else 0 def test(input_str): # 所有字符的输入时间统计 char_time = sum([(keyboard.index(c)% 3 + 1) * time_delta for c in list(input_str)]) # 同一按键等待时间统计 wait_time = sum([get_wait_time(c, list(input_str)[index-1]) for index, c in enumerate(list(input_str)) if index >= 1]) print sum([char_time, wait_time]) test(input())

浙公网安备 33010602011771号