这次去⼤华⾯试测试开发岗,第⼀题笔试题⼀上来有点懵,后⾯想了⼀下有些思路,时间紧迫就没写出来,⼀回到家⼜写出来了。所以这次记录⼀下分享给需要的朋友。题⽬:
代码:
def get_time(s=''):
btn_str = 'azc dwf gti jql mon pkr shu vex yb' btn_list = btn_str.split() position_0 = 0 sum_time = 0 for i in s:
for m in range(9): if i in btn_list[m]:
position_1 = m + 1 # 获取字母所在按键
if position_0 == position_1: # 如果在同⼀个按键上,时间+2 sum_time += 2
position_0 = position_1
for n in range(len(btn_list[m])): if btn_list[m][n] == i:
position_i = n # 获取字母按键上位置 if position_i == 0: sum_time += 1 elif position_i == 1: sum_time += 2 elif position_i == 2: sum_time += 3
print('{}总时间为:{}'.format(s, sum_time))
get_time('ac')get_time('zc')get_time('zw')
运⾏结果:
ac总时间为:6zc总时间为:7zw总时间为:4
解题思路:
1、⾸先把26个字母分组分好,即每个按键对应什么字母,此处可以⽤split函数切割成列表形式2、然后将传⼊的字符⼀个⼀个字母进⾏遍历,第⼀步先获取到字母所在的按键position_1
3、获取到字母按键后,需要先判断是否和上⼀个字母在同⼀个按键上,如果在同⼀个按键则加等待时间(第⼀个字母的上⼀个按键位置position_0给了初始值0,因此不需要加等待时间)。
4、处理完毕将当前字母位置赋值给position_0,⽤于下⼀个字母对⽐。5、按键位置处理完毕,获取字母在按键上的位置,根据题意依次加时间
因篇幅问题不能全部显示,请点此查看更多更全内容