题目
给定两个字符串 s1
和 s2
,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。
示例 1:
1 | 输入: s1 = "abc", s2 = "bca" |
示例 2:
1 | 输入: s1 = "abc", s2 = "bad" |
提示:
0 <= len(s1) <= 100
0 <= len(s2) <= 100
解法
解法一:
借助HashMap。
首先两者长度必须相等。
遍历s1,每个字符存入HashMap。遍历s2,判断是否每个字符都在s1里面出现,并且出现的次数相同。
JAVA
1 | public boolean CheckPermutation(String s1, String s2) { |
解法二:
将s1和s2转为字符数组c1和c2,对其两个字符数组排序,遍历,挨个比较,不一致返回false
JAVA
1 | public boolean CheckPermutation(String s1, String s2) { |
解法三:
异或运算.
如果两个字符数组刚好是对方的字符重排,那么它们的异或结果一定为0.
Java
1 | public boolean CheckPermutation(String s1, String s2) { |
解法四:
计数排序。
计算每个字符出现的次数,如果s2中出现的次数不一致,则返回false
Java
1 | class Solution { |