🤖 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)
}
![]()
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) # 输出: idif __name__ == "__main__":
main()
![]()
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;
}
![]()
我们相信人工智能为普通人提供了一种“增强工具”,并致力于分享全方位的AI知识。在这里,您可以找到最新的AI科普文章、工具评测、提升效率的秘籍以及行业洞察。 欢迎关注“福大大架构师每日一题”,发消息可获得面试资料,让AI助力您的未来发展。