def is_special_word(word):
word=word.lower()
n = -1
for i in range(len(word)-1):
t = abs(ord(word[i])-ord(word[i+1]))
if t<=n:
return False
n = t
return True
print(is_special_word('subway'))
这个题目有意思,主要是对字符串的处理。写了段代码参考一下
def is_special_word(word):
import string
word=word.lower()
dis=[]
values = {x: y for x, y in zip(list(string.ascii_letters),range(1, 27))}
for i in range(len(word)-1):
d=abs(values[word[i]]-values[word[i+1]])
dis.append(d)
if dis == sorted(dis):
print('True')
else:
print('False')
is_special_word('subway')
:
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
def isSpecialWord(word=None):
import re
if not word:
exit("字符串不能为空")
if re.search("[\d\.\*\?]",word.lower()):
exit("字符串不能包含数字或特殊字符")
wordTab = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6, 'g': 10, 'h': 8, 'i': 9, 'k': 11, 'l': 12, 'm': 13, 'n': 14, 'o': 15, 'p': 16, 'q': 17, 'r': 18, 's': 19, 't': 20, 'u': 21, 'v': 22, 'w': 23, 'x': 24, 'y': 25, 'z': 26}
nums = list(map(lambda x:wordTab.get(x),word.lower())) #获取每个单词对应的数字
res = list(map(lambda i:abs(nums[i+1] - nums[i]),range(len(nums)-1))) #计算两个数字间的距离
if res == sorted(res):
print('True')
else:
print("False")
isSpecialWord(word="subway")
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y
把这个问题删除了吧
把这个问题删除了吧