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