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-05SpringBoot項目啟動后再請求遠(yuǎn)程接口的解決方式
Spring?Boot是由Pivotal團(tuán)隊提供的全新框架,其設(shè)計目的是用來簡化Spring應(yīng)用的創(chuàng)建、運行、調(diào)試、部署等,這篇文章主要介紹了SpringBoot項目啟動后再請求遠(yuǎn)程接口的實現(xiàn)方式?,需要的朋友可以參考下2023-02-02Windows下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