特殊单词
题目描述有一种特殊的英文单词,它的相邻字母对之间的“距离”不断增加。如单词subway,它的相邻字母对分别为 (s, u), (u, b), (b, w), (w, a), (a, y), 字母之间的距离依次为2,19,21,22,24(如a是第1个字母,y是第25个字母,a和y的距离为24)。编写函数is_special_word(word),word为输入单词字符串,如为特殊单词,返回True;否则返回False。
输入
单词
输出
如为特殊单词,返回True;否则返回False。
输入样例1
subway
输出样例1
True
本帖最后由 isdkz 于 2023-4-25 13:14 编辑
编写如下函数 `is_special_word(word)`,该函数接收一个字符串 `word` 作为输入,并检查它是否满足特殊单词的条件。如果满足条件,则返回 True,否则返回 False。
def is_special_word(word):
if not word:
return False
word = word.lower()
prev_distance = abs(ord(word) - ord(word))
for i in range(1, len(word) - 1):
curr_distance = abs(ord(word) - ord(word))
if curr_distance <= prev_distance:
return False
prev_distance = curr_distance
return True
# 测试样例
print(is_special_word("subway"))# 输出: True
此函数首先将输入的单词转换为小写,然后计算第一对相邻字母之间的距离。接下来,遍历单词的其余部分,并计算相邻字母之间的距离。如果当前距离小于或等于前一个距离,则返回 False,因为该单词不满足特殊单词的条件。如果遍历完整个单词且没有返回 False,则返回 True。 以下是Python的代码实现:
def is_special_word(word):
if len(word) <= 1:
return True
prev_dist = ord(word) - ord(word)
for i in range(2, len(word)):
curr_dist = ord(word) - ord(word)
if curr_dist - prev_dist <= 0:
return False
prev_dist = curr_dist
return True
# 测试
print(is_special_word('subway'))# True
print(is_special_word('python'))# False
思路解析:
首先判断输入单词是否为空或长度为1,这种情况下我们默认为特殊单词,直接返回True。
当单词长度大于1时,我们可以从第二个字母开始依次计算相邻字母对之间的距离,然后判断这些距离是否不断递增,如果不是,则说明单词不满足“特殊单词”的定义,返回False。
页:
[1]