import java.util.*;
/**
* @author xnl
* @Description:
* @date: 2022/6/8 22:23
*/
public class Solution {
public static void main(String[] args) {
Solution solution = new Solution();
String s = "rat", t = "car";
System.out.println(solution.isAnagram(s, t));
}
/**
* 使用map
* @param s
* @param t
* @return
*/
public boolean isAnagram(String s, String t) {
if (s.equals(t) || s.length() != t.length()){
return false;
}
Map<Character, Integer> map = new HashMap<>();
for (int i = 0; i < s.length(); i++){
map.put(s.charAt(i), map.getOrDefault(s.charAt(i) , 0) + 1);
}
for (int i = 0; i < t.length(); i++){
Integer integer = map.get(t.charAt(i));
if (integer == null || --integer < 0){
return false;
}
map.put(t.charAt(i), integer);
}
return true;
}
/**
* 使用数组来记录出现的次数
* @param s
* @param t
* @return
*/
public boolean isAnagram2(String s, String t) {
if (s.equals(t) || s.length() != t.length()){
return false;
}
int[] array = new int[26];
for (int i = 0; i < s.length(); i++){
array[s.charAt(i) - 'a']++;
array[t.charAt(i) - 'a']--;
}
for (int c : array){
if (c != 0){
return false;
}
}
return true;
}
// 使用排序,排序的时间复杂度是logn
public boolean isAnagram(String s, String t) {
if (s.length() != t.length() || s.equals(t)) {
return false;
}
char[] str1 = s.toCharArray();
char[] str2 = t.toCharArray();
Arrays.sort(str1);
Arrays.sort(str2);
return Arrays.equals(str1, str2);
}
}
力扣:剑指 Offer II 032. 有效的变位词
最新推荐文章于 2024-09-30 14:51:11 发布