網站開發(fā)項目設計文檔n127網推廣
題目:leetcode242. 有效的字母異位詞
描述:
給定兩個字符串 s 和 t ,編寫一個函數(shù)來判斷 t 是否是 s 的字母異位詞。
注意:若 s 和 t 中每個字符出現(xiàn)的次數(shù)都相同,則稱 s 和 t 互為字母異位詞。
示例 1:
輸入: s = “anagram”, t = “nagaram”
輸出: true
示例 2:
輸入: s = “rat”, t = “car”
輸出: false
思路:
對于這道題,做一個哈希表來解決是最好的,暴力破解的時間復雜度太高。
首先題目其實是讓我們判斷字符串s和字符串t是否是同一個字符串的不一樣的順序,也就是s字符串打亂順序之后是否可以成為t。
明白了題目要求之后我們就可以做了,首先題目說了可以假定都是小寫字母,那么字母數(shù)量就是26個(如果有大寫有小寫,那我們就要設置52個字母數(shù)量),設置一個26個空間的整型數(shù)組來記錄這個字符串當中出現(xiàn)的字母,遍歷第一個字符串,每個字母-'a’就得到了一個0到25的數(shù)字大小,對應數(shù)組的下標,最后對應的數(shù)組下標的位置做加一操作。
對于第二個字符串也是一樣的求出對應數(shù)組的下標,但是做的是減一操作。
做完上述操作之后,檢查哈希數(shù)組每個位置是否都是0,如果是則符合規(guī)定,如果不是返回false。
代碼:
class Solution {public boolean isAnagram(String s, String t) {int[] hashTable=new int[26]; //26個空間大小來保存26個字母的情況for(int i=0;i<s.length();i++)hashTable[s.charAt(i)-'a']++;for(int i=0;i<t.length();i++)hashTable[t.charAt(i)-'a']--;for(int i:hashTable)if(i!=0)return false;return true;}
}