首页 > 其他分享 >leedcode-反转字符串中的元音字母

leedcode-反转字符串中的元音字母

时间:2024-04-10 21:00:27浏览次数:24  
标签:right list leedcode 字符串 vowel 元音 left 指针

自己写的,双指针,一次通过

class Solution:
    def reverseVowels(self, s: str) -> str:
        # 将输入的字符串转换为列表
        s_list = list(s)
        
        # 定义元音字母列表
        vowels = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U']
        
        # 获取字符串的长度
        n = len(s_list)
        
        # 初始化左指针和右指针,分别指向字符串的开头和末尾
        left = 0
        right = n - 1
        
        # 初始化左指针和右指针是否指向元音字母的标志
        left_vowel = False
        right_vowel = False
        
        # 使用双指针法来反转字符串中的元音字母
        while left < right:
            # 如果左指针指向的字符是元音字母,则将 left_vowel 标志设置为 True
            if s_list[left] in vowels:
                left_vowel = True
            else:
                # 否则,将左指针向右移动一位
                left += 1
                
            # 如果右指针指向的字符是元音字母,则将 right_vowel 标志设置为 True
            if s_list[right] in vowels:
                right_vowel = True
            else:
                # 否则,将右指针向左移动一位
                right -= 1
                
            # 如果左指针和右指针都指向了元音字母
            if left_vowel and right_vowel:
                # 交换左指针和右指针指向的字符
                s_list[left], s_list[right] = s_list[right], s_list[left]
                
                # 重置左指针和右指针是否指向元音字母的标志
                left_vowel = False
                right_vowel = False
                
                # 同时将左指针向右移动一位,右指针向左移动一位
                left += 1
                right -= 1
                
        # 将列表转换回字符串并返回
        s_str = ''.join(s_list)
        return s_str

 gpt优化代码,精简:

class Solution:
    def reverseVowels(self, s: str) -> str:
        # 将输入的字符串转换为列表
        s_list = list(s)
        
        # 定义元音字母列表
        vowels = set('aeiouAEIOU')
        
        # 初始化左指针和右指针,分别指向字符串的开头和末尾
        left, right = 0, len(s_list) - 1
        
        # 使用双指针法来反转字符串中的元音字母
        while left < right:
            # 如果左指针指向的字符不是元音字母,则将左指针向右移动一位
            if s_list[left] not in vowels:
                left += 1
            # 如果右指针指向的字符不是元音字母,则将右指针向左移动一位
            elif s_list[right] not in vowels:
                right -= 1
            # 如果左右指针同时指向元音字母
            else:
                # 交换左右指针指向的字符
                s_list[left], s_list[right] = s_list[right], s_list[left]
                # 同时将左指针向右移动一位,右指针向左移动一位
                left += 1
                right -= 1
                
        # 将列表转换回字符串并返回
        return ''.join(s_list)

 

标签:right,list,leedcode,字符串,vowel,元音,left,指针
From: https://www.cnblogs.com/yyyjw/p/18127415

相关文章

  • 后缀数组--SA--字符串
    SA(SuffixArray)--后缀数组简介这里明白两个定义:\(SA_i\):按字典序排列后大小为\(i\)的后缀的后缀头的下标。\(Rank_i\):后缀头的下标为\(i\)按字典序排列后的排名。一个显而易见却很重要的结论:\[SA[Rank[i]]=Rank[SA[i]]=i\]如何进行后缀排序?暂且挂oi......
  • Leetcode反转字串541/翻转字串的单词151/实现 strStr方法28/重复的子字符串459
    前言Leetcode541/151/28一、541题(反转字符串)题目描述:给定一个字符串s和一个整数k,从字符串开头算起,每计数至2k个字符,就反转这2k字符中的前k个字符。如果剩余字符少于k个,则将剩余字符全部反转。如果剩余字符小于2k但大于或等于k个,则反转前k个字符,其余......
  • Python基础--python数据结构(字符串、列表和元组)
    前言!!!注意:本系列所写的文章全部是学习笔记,来自于观看视频的笔记记录,防止丢失。观看的视频笔记来自于:哔哩哔哩武沛齐老师的视频:2022Python的web开发(完整版)入门全套教程,零基础入门到项目实战数据结构1.字符串类型str1.1定义上个文件找1.2独有功能大写upper......
  • leedcode-反转字符串
    自己写的,这么简单?fromtypingimportListclassSolution:defreverseString(self,s:List[str])->None:n=len(s)#获取字符串列表的长度#使用双指针法来反转字符串#初始化指针i指向字符串开头,指针j指向字符串结尾......
  • C语言08-函数(递归、字符串、日期时间、数学计算函数),指针
    第11章函数11.7递归函数​ ——相当于俄罗斯套娃;一个程序未执行结束会挂起,相当于堆栈一个函数在函数体内又调用了本身,我们称为递归调用,这样的函数就是递归函数。递归函数成功执行需满足以下两个条件:(1)必须有一个明显的结束条件。(2)必须有一个趋近于结束条件的趋势......
  • C++程序分享--常见编程面试题:判断字符串是否为回文串
    关注我,持续分享逻辑思维&管理思维;可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;有意找工作的同学,请参考博主的原创:《面试官心得--面试前应该如何准备》,《面试官心得--面试时如何进行自我介绍》, 《做好面试准备,迎接2024金三银四》。【图解《程序员面试常见的十大算法......
  • 求字符串的连续最长字串
    前言给定一个字符串,求连续字符最长子串,比如aaaacabbbbbbbc,输出七个b。(牛客上看到的面试手撕题,闲着没事实现了一下)#include<iostream>#include<map>#include<algorithm>usingnamespacestd;intmain(){strings;cin>>s;intcount=1;......
  • 【蓝桥·算法双周赛 第 9 场 小白入门赛】字符迁移【算法赛】题解(字符串+模运算+差分)
    思路差分数组是一种特殊的数组,它的第iii个数定义为原数组的第ii......
  • 【蓝桥·算法双周赛 第 4 场 小白入门赛】自助餐【算法赛】题解(分支+字符串)
    思路首先定义一个整型变量n和一个长整型变量ans,其中n用于存放输入的字符串个数,ans则用于累计所有字符串对应的价格。在接收到n之后,进入一个循环,在循环中,每次接收一个字符串s,并根据s的首字母判断该字符串对应的餐盘种类,并将其价格累加到ans中。具体来说,如果......
  • Python基础笔记02-while、字符串格式化、运算符、基础概念与数据类型
    前言!!!注意:本系列所写的文章全部是学习笔记,来自于观看视频的笔记记录,防止丢失。观看的视频笔记来自于:哔哩哔哩武沛齐老师的视频:2022Python的web开发(完整版)入门全套教程,零基础入门到项目实战1.条件语句补充1.1基本语句if条件: ...else:...1.2多条件if条件1:......