鱼C论坛

 找回密码
 立即注册
查看: 2073|回复: 2

[已解决]特殊单词

[复制链接]
发表于 2023-4-24 22:44:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目描述

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

最佳答案
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[1]) - ord(word[0]))

    for i in range(1, len(word) - 1):
        curr_distance = abs(ord(word[i + 1]) - ord(word[i]))

        if curr_distance <= prev_distance:
            return False

        prev_distance = curr_distance

    return True


# 测试样例
print(is_special_word("subway"))  # 输出: True

此函数首先将输入的单词转换为小写,然后计算第一对相邻字母之间的距离。接下来,遍历单词的其余部分,并计算相邻字母之间的距离。如果当前距离小于或等于前一个距离,则返回 False,因为该单词不满足特殊单词的条件。如果遍历完整个单词且没有返回 False,则返回 True。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[1]) - ord(word[0]))

    for i in range(1, len(word) - 1):
        curr_distance = abs(ord(word[i + 1]) - ord(word[i]))

        if curr_distance <= prev_distance:
            return False

        prev_distance = curr_distance

    return True


# 测试样例
print(is_special_word("subway"))  # 输出: True

此函数首先将输入的单词转换为小写,然后计算第一对相邻字母之间的距离。接下来,遍历单词的其余部分,并计算相邻字母之间的距离。如果当前距离小于或等于前一个距离,则返回 False,因为该单词不满足特殊单词的条件。如果遍历完整个单词且没有返回 False,则返回 True。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-20 11:07:02 | 显示全部楼层
以下是Python的代码实现:
def is_special_word(word):
    if len(word) <= 1:
        return True
    prev_dist = ord(word[1]) - ord(word[0])
    for i in range(2, len(word)):
        curr_dist = ord(word[i]) - ord(word[i-1])
        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。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-23 03:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表