2026-06-26:移除尾部元音字母。用go语言,给定一个只包含小写英文字母的字符串 s。需要从字符串末尾开始,逐个向前检查:把所有出现在末

网易专栏1个月前发布 nxnqh
39 0 0

🤖 AI总结

主题

移除字符串尾部连续元音字母的算法实现

摘要

本文介绍了用Go语言移除字符串末尾连续元音字母的算法,包括详细执行过程、时间空间复杂度分析和多语言代码示例。

关键信息

  • 1 使用Go语言的strings.TrimRight函数移除尾部元音。
  • 2 题目来自力扣3856,输入’idea’输出’id’。
  • 3 时间复杂度O(n),空间复杂度O(n)。

2026-06-26:移除尾部元音字母。用go语言,给定一个只包含小写英文字母的字符串 s。需要从字符串末尾开始,逐个向前检查:把所有出现在末尾的元音字母(a、e、i、o、u)都删掉。最终返回删完这些“尾部连续元音”后剩下的字符串。

1 <= s.length <= 100。

s 仅由小写英文字母组成。

输入: s = “idea”。

输出: “id”。

解释:

移除 “idea” 后,得到字符串 “id”。

题目来自力扣3856。

分步详细执行过程 步骤1:主程序初始化变量

执行s := "idea",内存中生成完整字符串字符序列,字符从左到右依次为:索引0=i,索引1=d,索引2=e,索引3=a,完整字符序列:[i, d, e, a],字符串长度为4。

步骤2:调用处理函数trimTrailingVowels(s)

把字符串idea传入函数,函数内部执行strings.TrimRight(s, "aeiou"),进入库函数截断逻辑,逐轮从尾部校验:

第1轮校验(最末尾字符:索引3,字符a)

字符a在元音集合aeiou内,满足删除条件,直接截掉末尾的a,剩余字符串:ide,字符序列[i, d, e]

第2轮校验(当前新末尾字符:索引2,字符e)

字符e在元音集合内,满足删除条件,截掉末尾的e,剩余字符串:id,字符序列[i, d]

第3轮校验(当前新末尾字符:索引1,字符d)

字符d不在元音集合中,不满足删除条件,立刻终止尾部截断循环,不再向前检查。

步骤3:函数返回结果

截断停止后剩余字符串id作为函数返回值,赋值给变量result

步骤4:打印输出

执行fmt.Println(result),控制台输出最终结果字符串id,流程全部结束。

时间复杂度分析

设输入字符串长度为 n。

1.strings.TrimRight只会从尾部向前遍历,最坏情况整个字符串全是元音,需要遍历全部 n 个字符;

  • 2. 其余操作(函数调用、变量赋值、打印)均为常数时间 O(1);
    整体总时间复杂度:O(n)

    额外空间复杂度分析

    1. Go中字符串是不可变类型,截断操作会生成一段全新字符串存储结果;

  • 2. 额外存储的新字符串最长为原字符串长度 n,无额外数组、切片、哈希等辅助容器;
    整体总额外空间复杂度:O(n)

    Go完整代码如下:

    package main

    import (
    "fmt"
    "strings"
    )

    func trimTrailingVowels(s string)string {
    return strings.TrimRight(s, "aeiou")
    }

    func main() {
    s := "idea"
    result := trimTrailingVowels(s)
    fmt.Println(result)
    }

    2026-06-26:移除尾部元音字母。用go语言,给定一个只包含小写英文字母的字符串 s。需要从字符串末尾开始,逐个向前检查:把所有出现在末

    Python完整代码如下:

    # -*-coding:utf-8-*-

    def trim_trailing_vowels(s: str) -> str:
    """
    移除字符串末尾所有的元音字母(小写 a/e/i/o/u)。
    与 Go 的 strings.TrimRight(s, "aeiou") 行为一致。
    """
    return s.rstrip('aeiou')

    def main() -> None:
    s = "idea"
    result = trim_trailing_vowels(s)
    print(result) # 输出: id

    if __name__ == "__main__":
    main()

    2026-06-26:移除尾部元音字母。用go语言,给定一个只包含小写英文字母的字符串 s。需要从字符串末尾开始,逐个向前检查:把所有出现在末

    C++完整代码如下:

      
    


    std::string trimTrailingVowels(const std::string& s) {
    // 查找最后一个不属于元音集合的字符位置
    size_t pos = s.find_last_not_of("aeiou");
    if (pos == std::string::npos) {
    // 如果全是元音,返回空字符串
    return"";
    }
    // 保留从开头到 pos 的子串(包含 pos 处的字符)
    return s.substr(0, pos + 1);
    }

    int main() {
    std::string s = "idea";
    std::string result = trimTrailingVowels(s);
    std::cout << result << std::endl;
    return0;
    }

    2026-06-26:移除尾部元音字母。用go语言,给定一个只包含小写英文字母的字符串 s。需要从字符串末尾开始,逐个向前检查:把所有出现在末

    我们相信人工智能为普通人提供了一种“增强工具”,并致力于分享全方位的AI知识。在这里,您可以找到最新的AI科普文章、工具评测、提升效率的秘籍以及行业洞察。 欢迎关注“福大大架构师每日一题”,发消息可获得面试资料,让AI助力您的未来发展。

    © 版权声明

    相关文章