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.有效的字母異位詞的詳細(xì)內(nèi)容,更多關(guān)于java題解有效字母異位詞的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Kotlin基礎(chǔ)教程之dataclass,objectclass,use函數(shù),類擴(kuò)展,socket
這篇文章主要介紹了Kotlin基礎(chǔ)教程之dataclass,objectclass,use函數(shù),類擴(kuò)展,socket的相關(guān)資料,需要的朋友可以參考下2017-05-05
SpringBoot項目啟動后再請求遠(yuǎn)程接口的解決方式
Spring?Boot是由Pivotal團(tuán)隊提供的全新框架,其設(shè)計目的是用來簡化Spring應(yīng)用的創(chuàng)建、運行、調(diào)試、部署等,這篇文章主要介紹了SpringBoot項目啟動后再請求遠(yuǎn)程接口的實現(xiàn)方式?,需要的朋友可以參考下2023-02-02
Windows下gradle的安裝與配置的超詳細(xì)教程
這篇文章主要介紹了Windows下gradle的安裝與配置,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09
詳解spring boot 使用application.properties 進(jìn)行外部配置
這篇文章主要介紹了詳解spring boot 使用application.properties 進(jìn)行外部配置,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-03-03

