java題解leetcode242.有效的字母異位詞
leetcode242.有效的字母異位詞
給定兩個字符串 s 和 t ,編寫一個函數(shù)來判斷 t 是否是 s 的字母異位詞。
注意:若 s 和 t 中每個字符出現(xiàn)的次數(shù)都相同,則稱 s 和 t 互為字母異位詞。
解決問題
一開始我想到的是拆分成數(shù)組再排序,最后比較就行,但是這樣時間很長,要將近40ms
示例
char[] s1=s.toCharArray(); List<Character> x=new ArrayList<>(); for (char c : s1) { x.add(c); } x.sort((o1,o2)->o1.charValue()-o2.charValue()); char[] s2=t.toCharArray(); List<Character> y=new ArrayList<>(); for (char c : s2) { y.add(c); } y.sort((o1,o2)->o1.charValue()-o2.charValue()); if(x.size()!=y.size()){ return false; } for (int i = 0; i < x.size(); i++) { if(x.get(i)!=y.get(i)){ return false; } } return true;
參考代碼將該問題轉(zhuǎn)換為比較字符串中字母出現(xiàn)次數(shù)問題,并只需要在掃描s時在26位數(shù)組中記錄出現(xiàn)次數(shù),然后掃描t時減去相應(yīng)的次數(shù),最后檢測數(shù)組是否全為零就可以完美解決,只用了3ms
public boolean isAnagram(String s, String t) { int[] hash=new int[26]; for (int i = 0; i < s.length(); i++) { hash[s.charAt(i)-'a']++; } for (int i = 0; i < t.length(); i++) { hash[t.charAt(i)-'a']--; } for (int i = 0; i < 26; i++) { if(hash[i]!=0){ return false; } } return true; }
以上就是java題解leetcode242.有效的字母異位詞的詳細內(nèi)容,更多關(guān)于java題解有效字母異位詞的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Kotlin基礎(chǔ)教程之dataclass,objectclass,use函數(shù),類擴展,socket
這篇文章主要介紹了Kotlin基礎(chǔ)教程之dataclass,objectclass,use函數(shù),類擴展,socket的相關(guān)資料,需要的朋友可以參考下2017-05-05詳解spring boot 使用application.properties 進行外部配置
這篇文章主要介紹了詳解spring boot 使用application.properties 進行外部配置,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-03-03