python反转字符串的元音字母_反转字符串&反转字符串中的元音字母

8c11cf518740ca7847d329ebd1444509.png

解题思路

因为在 Python 中字符串是不可变,因此遍历字符串交换每个单词内字符位置的方法不太可行,但是利用 Python 切片的便利,可以写出更优雅的实现方式。

1、常规思路

将字符串分割成单词列表 然后把每个单词反转切片

使用for循环遍历

class Solution:

def reverseWords(self, s: str) -> str:

return " ".join(word[::-1] for word in s.split(" "))

fdced1328e6261c86b51aebdee65bea0.png

class Solution:

def reverseWords(self, s: str) -> str:

# 先反转单词列表,再反转字符串

return " ".join(s.split(" ")[::-1])[::-1]

b400c60d106ed9f0b90285f0247cc8c2.png

class Solution(object):

def reverseWords(self, s):

return " ".join(s[::-1].split(" ")[::-1])

28367764753354ed782af4c2c6e93fc2.png

bd6fa805e745a6d040fe83db3d9cf76f.png

思路一:

class Solution:

def reverseWords(self, s: str) -> str:

s = s.strip()

# 反转整个字符串

s_arr = s[::-1].split(" ")

s_reverse = []

for word in s_arr:

if word != '':

s_reverse.append(word[::-1])

return " ".join(s_reverse)

思路二:

eb3e653390f77e5ff7852bdf1bff8315.png

class Solution:

def reverseWords(self, s: str) -> str:

return " ".join(reversed(s.split()))

3f442383a60ef90b0a4edca921250d8c.png

双指针解法:

class Solution:

def reverseVowels(self, s: str) -> str:

vowels = {'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'}

left = 0

right = len(s) - 1

# str类型数据无法直接查询in和not in, 需要转换成list类型

s_lyst = list(s)

print(s_lyst)

while left < right:

if s_lyst[left] in vowels and s_lyst[right] in vowels:

# 交换位置

s_lyst[left], s_lyst[right] = s_lyst[right], s_lyst[left]

left += 1

right -= 1

if s_lyst[left] not in vowels:

left += 1

if s_lyst[right] not in vowels:

right -= 1

return ("").join(s_lyst)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值