博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode345. Reverse Vowels of a String
阅读量:2242 次
发布时间:2019-05-09

本文共 1165 字,大约阅读时间需要 3 分钟。

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

Example 1:

Input: "hello"Output: "holle"

Example 2:

Input: "leetcode"Output: "leotcede"

Note:

The vowels does not include the letter "y".


思路:建立两个列表,一个是存储遇到的元音字母,一个存储的是元音字母的位置。然后把位置列表倒置,再把元音字母按新的顺序(倒置后的顺序)替换原字符串中的字母。

中间用到了几个方法:set(字符串)可以将字符串存储为单个不重复字母。(用{}存储,不是很理解)

因为字符串不能进行字母替换,所以用list()转为列表,在用join()转为字符串

class Solution:    def reverseVowels(self, s):        """        :type s: str        :rtype: str        """        vowels = set('aeiouAEIOU')        v=[]        l=[]        for i,char in enumerate(s):            if char in vowels:                v.append(char)                l.append(i)        slist=list(s)        l.reverse()                for i in range(len(l)):            slist[l[i]] = v[i]                    return ''.join(slist)

也看到大佬用re.sub(),re.findall()方法做,不过这里用到了正则模式字符串,不是很懂。记录一下以后学习。

def reverseVowels(self, s):    vowels = re.findall('(?i)[aeiou]', s)    return re.sub('(?i)[aeiou]', lambda m: vowels.pop(), s)
def reverseVowels(self, s):    vowels = (c for c in reversed(s) if c in 'aeiouAEIOU')    return re.sub('(?i)[aeiou]', lambda m: next(vowels), s)

 

 

转载地址:http://yprbb.baihongyu.com/

你可能感兴趣的文章
Oracle PL/SQL语言初级教程之过程和函数
查看>>
Oracle PL/SQL语言初级教程之表和视图
查看>>
Oracle PL/SQL语言初级教程之完整性约束
查看>>
PL/SQL学习笔记
查看>>
如何分析SQL语句
查看>>
结构化查询语言(SQL)原理
查看>>
SQL教程之嵌套SELECT语句
查看>>
日本語の記号の読み方
查看>>
计算机英语编程中一些单词
查看>>
JavaScript 经典例子
查看>>
判断数据的JS代码
查看>>
js按键事件说明
查看>>
AJAX 设计制作 在公司弄的 非得要做出这个养的 真晕!
查看>>
Linux 查看文件大小
查看>>
Java并发编程:线程池的使用
查看>>
redis单机及其集群的搭建
查看>>
Java多线程学习
查看>>
检查Linux服务器性能
查看>>
Java 8新的时间日期库
查看>>
Chrome开发者工具
查看>>