public class Solution {public boolean isAnagram(String s, String t) {
if(s.equals(t))
return true;
if(s==null||t==null||s.length()!=t.length())
return false;
int[] num=new int[26];
for(int i=0;i<s.length();i++){
num[s.charAt(i)-'a']++;
num[t.charAt(i)-'a']--;
}
for(int i:num ){
if(i!=0)
return false;
}
return true;
}
這是用來判斷兩個字符串s和t是否是變形詞的問題,例如abc和bca是變形詞, abc和adw不是變形詞。
for(int i=0;i<s.length();i++){
num[s.charAt(i)-'a']++;
num[t.charAt(i)-'a']--;
}
for(int i:num ){
if(i!=0)
return false;
關于這段代碼有點小疑問,num[]++和num[]--代表著什么? 如果只寫 - 'a'的話,又如何記錄26個字母在每個字符串中出現的個數呢?
1 回答

湖上湖
TA貢獻2003條經驗 獲得超2個贊
num[s.charAt(i)-'a']++;代表s中該字母的頻數加1;
num[t.charAt(i)-'a']--;代表t中該字母的頻數減1;
當s和t中所有字母頻數相同時即為變形詞。
添加回答
舉報
0/150
提交
取消