pdl666 发表于 2023-4-24 22:44:52

特殊单词

题目描述

有一种特殊的英文单词,它的相邻字母对之间的“距离”不断增加。如单词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-24 22:48:41

本帖最后由 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。

陶远航 发表于 2023-5-20 11:07:02

以下是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]
查看完整版本: 特殊单词