2026-04-25:反转元音数相同的单词。用go语言,给定一个由小写英文单词组成的字符串,各单词之间用单空格分隔。 先统计第一个单词里出现的元音字母数量(元音为 a/e/i/o/u)。记这个数量为
2026-04-25反转元音数相同的单词。用go语言给定一个由小写英文单词组成的字符串各单词之间用单空格分隔。先统计第一个单词里出现的元音字母数量元音为 a/e/i/o/u。记这个数量为 k。然后从第二个单词开始逐个处理如果某个单词的元音数量也等于 k就把该单词反转字母顺序否则保持该单词不变。最后把所有单词按原有顺序重新用空格拼接输出结果字符串。1 s.length 100000。s 仅由小写的英文字母和空格组成。s 中的单词由 单个空格 隔开。s 不包含前导或尾随空格。输入 s “cat and mice”。输出 “cat dna mice”。解释第一个单词 “cat” 包含 1 个元音字母。“and” 包含 1 个元音字母因此将其反转为 “dna”。“mice” 包含 2 个元音字母因此保持不变。最终结果字符串为 “cat dna mice”。题目来自力扣3775。代码执行过程详细分步描述第一步定义元音统计函数countVowel这是一个辅助函数作用是统计一个字符串中元音字母a/e/i/o/u的总个数遍历字符串里的每一个字符逐个判断字符是否是元音字母每找到一个元音字母计数加1遍历完成后返回最终的元音计数结果。第二步执行核心逻辑函数reverseWords子步骤1拆分字符串为单词数组代码将输入的完整字符串按单个空格切割把连续的字符串拆分成独立的单词列表输入cat and mice切割后得到单词数组[cat, and, mice]子步骤2统计第一个单词的元音数确定k值取出单词数组的第一个单词cat调用元音统计函数计算元音数字符c非元音字符a元音计数1字符t非元音最终第一个单词元音数k 1并把这个值固定下来。子步骤3遍历处理第二个及之后的所有单词从第二个单词开始数组下标为1逐个判断、处理处理第二个单词and调用函数统计元音数a是元音n/d非元音元音数1判断元音数1等于k1满足反转条件执行反转操作将单词and的字母顺序颠倒变成dna用反转后的单词替换原单词数组变为[cat, dna, mice]。处理第三个单词mice调用函数统计元音数i和e是元音元音数2判断元音数2不等于k1不满足反转条件保持原单词不变数组仍为[cat, dna, mice]。子步骤4拼接单词数组为完整字符串将处理后的单词数组按单个空格重新拼接成一个完整字符串拼接结果cat dna mice。第三步主函数输出结果定义输入字符串s cat and mice调用核心处理函数得到结果打印输出最终结果cat dna mice。时间复杂度与额外空间复杂度分析1. 总时间复杂度时间复杂度描述代码执行的总操作次数与输入数据规模的关系字符串拆分、拼接操作次数与字符串总长度n成正比复杂度为O(n)元音统计遍历整个字符串的所有字符一次复杂度为O(n)单词反转仅反转符合条件的单词总操作次数不超过字符串总长度n复杂度为O(n)所有步骤都是线性操作总时间复杂度为 O(n)n 为输入字符串的总长度。2. 总额外空间复杂度额外空间复杂度描述代码执行过程中除了输入和输出外额外占用的内存空间代码需要创建单词数组存储所有单词空间大小与字符串长度n成正比反转单词时需要创建临时字节切片空间大小不超过单词总长度所有临时变量的空间占用均为线性级别总额外空间复杂度为 O(n)n 为输入字符串的总长度。总结执行流程拆分字符串→统计首单词元音数→遍历判断并反转符合条件的单词→拼接字符串→输出结果时间复杂度O(n)处理效率高可满足题目中最长10万字符的输入要求额外空间复杂度O(n)需要线性空间存储单词和临时数据。Go完整代码如下packagemainimport(fmtslicesstrings)funccountVowel(sstring)(vowelint){for_,c:ranges{ifstrings.IndexRune(aeiou,c)0{vowel}}return}funcreverseWords(sstring)string{a:strings.Split(s, )cnt0:countVowel(a[0])fori:1;ilen(a);i{ifcountVowel(a[i])cnt0{t:[]byte(a[i])slices.Reverse(t)a[i]string(t)}}returnstrings.Join(a, )}funcmain(){s:cat and miceresult:reverseWords(s)fmt.Println(result)}Python完整代码如下# -*-coding:utf-8-*-defcount_vowel(s:str)-int:Count vowels in a stringvowel0forcins:ifcinaeiou:vowel1returnvoweldefreverse_words(s:str)-str:Reverse words that have the same vowel count as the first wordwordss.split( )cnt0count_vowel(words[0])foriinrange(1,len(words)):ifcount_vowel(words[i])cnt0:# Reverse the wordwords[i]words[i][::-1]return .join(words)defmain():scat and miceresultreverse_words(s)print(result)if__name____main__:main()C完整代码如下#includeiostream#includestring#includevector#includealgorithm#includesstreamintcountVowel(conststd::strings){intvowel0;std::string vowelsaeiou;for(charc:s){if(vowels.find(c)!std::string::npos){vowel;}}returnvowel;}std::stringreverseWords(conststd::strings){// Split string into wordsstd::vectorstd::stringwords;std::stringstreamss(s);std::string word;while(ssword){words.push_back(word);}if(words.empty()){return;}intcnt0countVowel(words[0]);for(size_t i1;iwords.size();i){if(countVowel(words[i])cnt0){// Reverse the wordstd::reverse(words[i].begin(),words[i].end());}}// Join the words backstd::string result;for(size_t i0;iwords.size();i){if(i0){result ;}resultwords[i];}returnresult;}intmain(){std::string scat and mice;std::string resultreverseWords(s);std::coutresultstd::endl;return0;}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2551422.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!