終於完成第一週了~
今天來定第二週的題目然後再解一題吧
第一週:Array
第二週:Hash Table
第三週:Dynamic Programming
第四週:Graph
題目說它會給兩個字串,分別是t跟s,然後如果兩個字串的全部字母出現次數都一樣就回傳true,如果不一樣就回傳false。
然後題目說它只會出現小寫字母。
我想說可以記下他們的每一個出現過的字母,然後假設S字串出現的字母我就幫他+1,然後t字串出現的字母我就幫他-1。因為這只有要看他們的字母所以不用管順序,然後如果字母數量都一樣,就可以看出現的次數一不一樣,如果一樣的話那他們的記數應該都要是0才對。
所以就先判斷長度是不是一樣,不一樣就可以先刷掉了。然後創一個陣列,如果要記錄字母就在它的位置+1或-1,最後看這個陣列式不適每一個位置都是0。
class Solution {
public boolean isAnagram(String s, String t) {
if (s.length() != t.length()) return false; //檢查長度是否相同
int[] count = new int[26]; //建一個記錄a-z的陣列陣列
//統計s和t的字元出現次數
for (int i = 0; i < s.length(); i++) {
count[s.charAt(i) - 'a']++; //要-'a'把字元轉成索引
count[t.charAt(i) - 'a']--;
}
//檢查陣列是否都為0
for (int i = 0; i < count.length; i++) {
int c = count[i];
if (c != 0) {
return false;
}
}
return true;
}
}
執行成功