1.反转字符串中的元音字母
给你一个字符串 s ,仅反转字符串中的所有元音字母,并返回结果字符串。
元音字母包括 'a'、'e'、'i'、'o'、'u',且可能以大小写两种形式出现不止一次。
方法一:双指针
#方法一:双指针
def reverseVowels(s):
t=['a','e','i','o','u','A','E','I','O','U']#元音
left,right=0,len(s)-1 #左右指针
s=list(s) #转换成列表
while left<right:
while left<len(s) and s[left] not in t:
left+=1 #直到找到元音
while right>0 and s[right] not in t:
right-=1 #直到找到元音
if left<right:
#保证不重合
tem=s[left]
s[left]=s[right]
s[right]=tem #交换
left+=1
right-=1
return ''.join(s)
2.赎金信
给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。
如果可以,返回 true ;否则返回 false 。
magazine 中的每个字符只能在 ransomNote 中使用一次。
方法一:遍历+哈希表
#方法一:遍历+哈希表
def canConstruct(ransomNote, magazine):
d={}
for i in magazine:
if i not in d:
d[i]=1
else:
d[i]+=1 #统计某一字母出现的次数
for m in ransomNote:
if m not in d or d[m]<=0:
return False #肯定不满足
d[m]-=1
return True