字符串
1. 判断两个字符串是否是:同字母异序词
LeetCode 242. Valid Anagram (Easy)
使用列表实现的哈希表存储s串字符出现的次数,遍历t串字符,对哈希表中的字符进行减法操作,如果出现负数,那么字符数量不匹配,返回False,如果遍历完成不返回False,那么字符串是匹配的,返回True。
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
if len(s) != len(t): return False
hashMap = [0 for _ in range(26)]
for ch in s:
hashMap[ord(ch)-97] += 1
for ch in t:
hashMap[ord(ch)-97] -= 1
if hashMap[ord(ch)-97] < 0:
return False
return True
2. 可构成回文串的最大长度
LeetCode 409. Longest Palindrome (Easy)
回文串一定是轴对称的。也就是中间的串可以单独出现,两边的串一定是成对出现的。那么出现偶数次的字符一定可以构成回文串。出现奇数次的字符,将其进行减一操作也可以放在两边。最后在中间添加一个奇数个字符即可构成最长串。
class Solution:
def longestPalindrome(self, s: str) -> int:
res, Odd = 0, 0
hashMap = [0 for _ in range(52)]
for ch in s:
hashMap[ord(ch)-97] += 1
for item in hashMap:
if item % 2 == 0:
res += item
else:
res += item - 1
Odd = 1
return res if Odd == 0 else res + 1