原题地址

2601.png

常规的双指针题目,需要注意的是,Python中str是不可变类型,所以要先将str转换为其他类型,比如list

注:把vowels由list改为set后,快了不止一点,应该是涉及到list和set的存储方式问题。

Python代码

  1. def reverseVowels(self, s: str) -> str:
  2. vowels = set(['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'])
  3. slist = list(s)
  4. low, high = 0, len(s)-1
  5. while low <= high:
  6. if slist[low] in vowels and slist[high] in vowels:
  7. slist[low], slist[high] = slist[high], slist[low]
  8. low += 1
  9. high -= 1
  10. else:
  11. if slist[low] not in vowels:
  12. low += 1
  13. if slist[high] not in vowels:
  14. high -= 1
  15. return ''.join(slist)

2602.png