Java解決刪除字符使頻率相同問題
Java解決刪除字符使頻率相同問題
01 題目
給你一個下標從 0 開始的字符串 word
,字符串只包含小寫英文字母。你需要選擇 一個 下標并 刪除 下標處的字符,使得 word
中剩余每個字母出現(xiàn) 頻率 相同。
如果刪除一個字母后,word
中剩余所有字母的出現(xiàn)頻率都相同,那么返回 true
,否則返回 false
。
注意:
- 字母
x
的 頻率 是這個字母在字符串中出現(xiàn)的次數(shù)。 - 你 必須 恰好刪除一個字母,不能一個字母都不刪除。
示例 1:
輸入:word = "abcc" 輸出:true 解釋:選擇下標 3 并刪除該字母:word 變成 "abc" 且每個字母出現(xiàn)頻率都為 1 。
示例 2:
輸入:word = "aazz" 輸出:false 解釋:我們必須刪除一個字母,所以要么 "a" 的頻率變?yōu)?1 且 "z" 的頻率為 2 ,要么兩個字母頻率反過來。所以不可能讓剩余所有字母出現(xiàn)頻率相同。
提示:
2 <= word.length <= 100
word
只包含小寫英文字母。
02 知識點
- 雙重循環(huán)
- 哈希表set
03 我的解題思路
public class shuzu02 { public static void main(String[] args) { // 測試數(shù)據(jù) String word = "aazz"; System.out.println(equalFrequency(word)); } public static boolean equalFrequency(String word) { // 先循環(huán)整個字符串,并記錄每個字符出現(xiàn)的頻率 char[] chars=word.toCharArray(); int[] nums=new int[26]; for (int i = 0; i < chars.length; i++) { nums[chars[i]-'a']++; } // 雙重循環(huán)整個頻率記錄數(shù)組,思路是找到題設(shè)的題解(即字符只有兩種頻率,頻率高的字符需且僅需減一就等于頻率低的字符頻率) for (int i = 0; i < 26; i++) { // 遍歷整個數(shù)組,頻率為零則直接重新循環(huán),字符串長度大于等于2,只有字符串長度等于1時符合題設(shè) if (nums[i]==0) { continue; } // 頻率高的字符需且僅需減一,減一后若符合題解,整個數(shù)組頻率相同 nums[i]--; HashSet<Integer> setsHashSet=new HashSet<Integer>(); // 再次循環(huán)整個數(shù)組,利用HashSet內(nèi)元素不重復(fù)的特點 for (int j = 0; j < 26; j++) { if (nums[j]>0) { setsHashSet.add(nums[j]); } } // 若HashSet內(nèi)元素數(shù)量為1,則整個數(shù)組頻率相同,符合題設(shè) if (setsHashSet.size()==1) { return true; } // 不符合題設(shè)要把值改回原來,繼續(xù)循環(huán) nums[i]++; } // 循環(huán)后找不到符合題解,符合false return false; } }
到此這篇關(guān)于Java解決刪除字符使頻率相同問題的文章就介紹到這了,更多相關(guān)Java刪除字符頻率相同內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
spring的TransactionSynchronizationAdapter事務(wù)源碼解析
這篇文章主要介紹了spring的TransactionSynchronizationAdapter事務(wù)源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-09-09Java中BufferedReader和BufferedWriter使用方式
這篇文章主要介紹了Java中BufferedReader和BufferedWriter使用方式,F(xiàn)ileWriter?類從?OutputStreamWriter?類繼承而來,BufferedReader?類從字符輸入流中讀取文本并緩沖字符,以便有效地讀取字符,數(shù)組和行2022-06-06idea2020.1最新版永久破解/pycharm也可用(步驟詳解)
這篇文章主要介紹了idea2020.1最新版永久破解/pycharm也可用,本文給大家分享簡單實現(xiàn)步驟,通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-04-04idea hibernate jpa 生成實體類的實現(xiàn)
這篇文章主要介紹了idea hibernate jpa 生成實體類的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11詳解Java中static關(guān)鍵字和內(nèi)部類的使用
這篇文章主要為大家詳細介紹了Java中static關(guān)鍵字和內(nèi)部類的使用,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-08-08