问题描述
给定两个字符串 s1
和 s2
,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。
示例 1:
输入: s1
= "abc", s2
= "bca"
输出: true
示例 2:
输入: s1
= "abc", s2
= "bad"
输出: false
说明:
0 <= len(s1) <= 100
0 <= len(s2) <= 100
解题思路
即比较两个字符串中所有出现的字符的次数是否相等。
可以使用 collections
库中的 Counter
统计每个字符的字数。
| from collections import Counter
class Solution:
def CheckPermutation(self, s1: str, s2: str) -> bool:
c1, c2 = Counter(s1), Counter(s2)
return c1 == c2
|
也可以自己使用字典实现。
针对题目中的测例都是小写字母。
1
2
3
4
5
6
7
8
9
10
11
12
13 | class Solution:
def CheckPermutation(self, s1: str, s2: str) -> bool:
count = [0] * (ord('z') - ord('a') + 1)
for c in s1:
count[ord(c) - 97] += 1
for c in s2:
count[ord(c) - 97] -= 1
if any(count):
return False
return True
|
可以排序后比较两个字符串是否相等。
| class Solution:
def CheckPermutation(self, s1: str, s2: str) -> bool:
return "".join(sorted(s1)) == "".join(sorted(s2))
|