标签:i++ toc 字符 遍历 位置 solution 初始化 bool 数组
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。例如:输入 s = "anagram",t = "nagaram",s 和 t 是字母异位词,而 s = "rat",t = "car",此时 s 和 t 不是字母异位词。你可以假设字符串中只有小写字母
使用哈希映射,首先判断两个字符串长度是否相等,不相等则直接返回 false,若相等,则用一个数组初始化 26 个字母哈希表,遍历字符串 s 和 t,s 负责在对应位置增加,t 负责在对应位置减少,如果哈希表的值都为 0,则二者是字母异位词
class Solution {
public boolean isAnagram(String s, String t) {
if(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 i = 0; i < array.length; i++) {
if(array[i] != 0) {
return false;
}
}
return true;
}
}
也可以借助排序,看排序后的字符串是否相等即可判断
class Solution {
public boolean isAnagram(String s, String t) {
if (s.length() != t.length()) {
return false;
}
char[] str1 = s.toCharArray();
char[] str2 = t.toCharArray();
Arrays.sort(str1);
Arrays.sort(str2);
return Arrays.equals(str1, str2);
}
}
标签:i++ toc 字符 遍历 位置 solution 初始化 bool 数组
原文地址:https://www.cnblogs.com/Yee-Q/p/14018471.html