目录
LC520. 检测大写字母
LC345. 反转字符串中的元音字母 双指针
LC38. 外观数列 双指针
LC520. 检测大写字母
upper()字符串中字母由小写变为大写
lower()字符串中字母由大写变为小写
capitalize()字符串中字母首字母大写其余小写
title()字符串中字母每个单词的首字母大写其余小写
- 全大写 2全小写 3 首字母大写其他小写
class Solution(object):
def detectCapitalUse(self, word):
"""
:type word: str
:rtype: bool
"""
return word == word.upper() or word == word.lower() or word == word.title()
LC345. 反转字符串中的元音字母
相向双指针
一个指针从前往后,一个指针从后往前
交换(类似partiton)
判断元音字母 aeiou 写一个函数
class Solution(object):
def reverseVowels(self, s):
"""
:type s: str
:rtype: str
"""
if not s:
return ''
letter = 'aeiouAEIOU'
s = list(s)
#快速排序中partition模板
left = 0
right = len(s) - 1
while left <= right:
while left <= right and not self.check(s[left], letter):
left += 1
while left <= right and not self.check(s[right], letter):
right -= 1
if left <= right:
s[left], s[right] = s[right], s[left]
left += 1
right -= 1
return ''.join(s)
def check(self, c, s):
return c in s
LC38. 外观数列
字符串一开始是‘1’
双指针 p1 p2 p2遇到相同的就一直移动
数量是 p2 - p1
class Solution(object):
def countAndSay(self, n):
s = '1'
# 从1开始要迭代多少次n -1次
for i in range(n - 1):
# 一次的过程
res = ''
p1 = 0
while p1 < len(s):
#p2往后移,直到遇到一个新的数
p2 = p1 + 1
while p2 < len(s) and s[p2] == s[p1]:
p2 += 1
cnt = p2 - p1
#有cnt个s[p1]
res += str(cnt) + s[p1]
# p1移动到p2
p1 = p2
# 每次都更新s
s = res
return s