首页 > 其他分享 >leetcode 345. Reverse Vowels of a String

leetcode 345. Reverse Vowels of a String

时间:2023-05-30 17:32:30浏览次数:37  
标签:arr String vows reverseVowels self Vowels 345 str stack

Write a function that takes a string as input and reverse only the vowels of a string.

Example 1:
Given s = "hello", return "holle".

Example 2:
Given s = "leetcode", return "leotcede".

Note:
The vowels does not include the letter "y".

class Solution(object):
    def reverseVowels(self, s):
        """
        :type s: str
        :rtype: str
        """
        arr = list(s)
        vows = {"a", "e", "i", "o", "u"}
        i, j = 0, len(arr)-1
        while i<j:
            if arr[i].lower() in vows:
                if arr[j].lower() in vows:
                    arr[i], arr[j] = arr[j], arr[i]                    
                    i += 1
                j -= 1
            else:
                i += 1
        return "".join(arr)

 or

class Solution(object):
    def reverseVowels(self, s):
        """
        :type s: str
        :rtype: str
        """
        arr = list(s)
        vows = {"a", "e", "i", "o", "u"}
        i, j = 0, len(arr)-1
        while i<j:
            if arr[i].lower() in vows:
                while i<j and arr[j].lower() not in vows:
                    j -= 1
                if i == j: break
                arr[i], arr[j] = arr[j], arr[i]                    
                j -= 1
            i += 1
        return "".join(arr)

 or 都用贪心:

class Solution(object):
    def reverseVowels(self, s):
        """
        :type s: str
        :rtype: str
        """
        arr = list(s)
        vows = {"a", "e", "i", "o", "u"}
        i, j = 0, len(arr)-1
        while i<j:
            while i<j and arr[i].lower() not in vows:
                i += 1
            while i<j and arr[j].lower() not in vows:
                j -= 1
            if i < j:
                arr[i], arr[j] = arr[j], arr[i]                    
                j -= 1
                i += 1
        return "".join(arr)

 或者是two sum的思路,

class Solution(object):
    def reverseVowels(self, s):
        """
        :type s: str
        :rtype: str
        """
        arr = list(s)
        vows = {"a", "e", "i", "o", "u", "A", "E", "I", "O", "U"}
        i, j = 0, len(arr)-1
        while i<j:            
            l, r = arr[i] in vows, arr[j] in vows
            if l and r:                
                arr[i], arr[j] = arr[j], arr[i]                    
                j -= 1
                i += 1
            elif l and not r:
                j -= 1
            elif not l and r:
                i += 1
            else:
                i += 1
                j -= 1
        return "".join(arr)

 此外,还有使用stack存储vows的做法,两次遍历,第一次生成stack,第二次在遇到vows时候直接pop stack里的字符替换掉。

class Solution(object):
    def reverseVowels(self, s):
        """
        :type s: str
        :rtype: str
        """
        arr = list(s)
        vows = {"a", "e", "i", "o", "u", "A", "E", "I", "O", "U"}
        stack = []
        for i,c in enumerate(arr):
            if c in vows:
                stack.append(c)
        for i,c in enumerate(arr):
            if c in vows:
                arr[i] = stack.pop()        
        return "".join(arr)

 

标签:arr,String,vows,reverseVowels,self,Vowels,345,str,stack
From: https://blog.51cto.com/u_11908275/6381026

相关文章

  • 3.1. 字符串与StringBuilder
    1.字符串(String)在Java中,字符串由String类表示。字符串是一系列字符的组合,用于表示文本数据。字符串是不可变的,这意味着一旦创建了一个字符串对象,就不能修改它的内容。创建字符串创建字符串的方式有两种:直接使用双引号("")创建字符串字面量。例如:Stringstr1="Hello,World!......
  • 分组,捕获,反向引用以及String类中使用
    1. 提出要求  896请看下面问题:给你一段文本请你找出所有四个数字连在一 起的子串,并且这四个数字要满足①第1位与第4位相同②第2位与第3位相同,比如1221,5775,……2. 介绍  896要解决前面的问题,我们需要了解正则表达式的几个概念:1. 分组我们可以用圆括号组成一个比较复杂的匹......
  • CodeForces 1830C Hyperregular Bracket Strings
    洛谷传送门CF传送门每一步思路都非常自然的题。考虑先从一些简单的case入手。1.\(k=0\)设\(g_i\)为长度为\(i\)的合法括号串数。显然\(\foralli\nmid2,g_i=0\)。对于偶数的\(i\),这是一个经典问题,\(g_i\)就是第\(\frac{i}{2}\)项卡特兰数,因此\(g_i=\bi......
  • JSON.parse 和 JSON.stringify()
    这篇文章主要介绍了JSON.parse()和JSON.stringify()使用。parse用于从一个字符串中解析出json对象,如varstr='{"name":"huangxiaojian","age":"23"}'结果:JSON.parse(str)Objectage:"23"name:"huangxiaojian"__proto__:Object注......
  • String验证码案例
    packagecom.String;importjava.util.Random;publicclassSrtingDemo2{//验证码publicstaticvoidmain(String[]args){System.out.println(createCode(4));System.out.println(createCode(6));}//设计一个方法,返回指定位数的......
  • String使用时的几个注意事项
    packagecom.String;publicclassSrtingDemo1{publicstaticvoidmain(String[]args){//String使用时的几个注意事项//1.String的对象是不可变的Stringname="黑马";name+="程序员";name+="波妞";......
  • 快速熟悉String提供的处理字符串的常用方法
    packagecom.String;publicclassStringDemo{publicstaticvoidmain(String[]args){//快速熟悉String提供的处理字符串的常用方法Strings="黑马java";//1.获取字符串长度System.out.println(s.length());//2.提取字......
  • String案例
    packagecom.String;importjava.util.Scanner;publicclassuserDemo{publicstaticvoidmain(String[]args){for(inti=0;i<3;i++){Scannersc=newScanner(System.in);System.out.println("请您输入登录名称:");......
  • substr()与substring()的区别
    在JavaScript编程语言中,substr()和substring()都是字符串函数,用于截取指定位置的子字符串。虽然这两个函数都可以用于截取字符串,但它们之间存在一些区别。substr(startIndex,length)函数:该函数返回从起始索引开始的指定长度的子字符串。其中,startIndex参数表示要截取的子......
  • 647. Palindromic Substrings刷题笔记
    用动态规划可以做,应该可以优化为只有两个表,而且不用每次res都加classSolution:defcountSubstrings(self,s:str)->int:n=len(s)dp=[[0]*nfor_inrange(n)]res=0foriinrange(n-1,-1,-1):forji......