LeetCode 242题 有效的字母异位词
题目:
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。
输入: s = “anagram”, t = “nagaram”
输出: true
public class isAnagram {
public static boolean isAnagram(String s, String t) {
boolean flag = false;
if (s.length() ==0 && t.length()==0){
flag = true;
}
if (s.length() != t.length()){
return false;
}
Map<Character,Integer> map = new HashMap();
Map<Character,Integer> map2 = new HashMap();
//将s中的字符添加到map中,字符作为key,次数作为value a->3,b->1,c->2
for (int i = 0;i<s.length();i++){
char c = s.charAt(i);
if (!map.containsKey(c)){
map.put(c,1);
}else {
map.replace(c,map.get(c)+1);
}
}
//将t中的字符添加到map中,字符作为key,次数作为value a->3,b->1,c->2
for (int i = 0;i<t.length();i++){
char c = t.charAt(i);
if (!map2.containsKey(c)){
map2.put(c,1);
}else {
map2.replace(c,map2.get(c)+1);
}
}
//方式一直接匹配两个map集合是否相等
// return map.equals(map2);
//方式二稍微笨拙点,遍历key,通过key,比较value
Set<Character> characters = map.keySet();
for (Character character : characters) {
if (map2.get(character) !=null){
if (map.get(character).intValue() == map2.get(character).intValue()){
flag = true;
}else {
return false;
}
}else {
return false;
}
}
return flag;
}
}
方法二:
public static void main(String[] args) {
String s = "cart";
String t = "ratn";
char[] sChars = s.toCharArray();
char[] tChars = t.toCharArray();
Arrays.sort(sChars);
Arrays.sort(tChars);
System.out.println(String.valueOf(sChars).equals(String.valueOf(tChars)));
}
仅作为学习留用。