Java解決刪除字符使頻率相同問題
Java解決刪除字符使頻率相同問題
01 題目
給你一個下標從 0 開始的字符串 word ,字符串只包含小寫英文字母。你需要選擇 一個 下標并 刪除 下標處的字符,使得 word 中剩余每個字母出現 頻率 相同。
如果刪除一個字母后,word 中剩余所有字母的出現頻率都相同,那么返回 true ,否則返回 false 。
注意:
- 字母
x的 頻率 是這個字母在字符串中出現的次數。 - 你 必須 恰好刪除一個字母,不能一個字母都不刪除。
示例 1:
輸入:word = "abcc" 輸出:true 解釋:選擇下標 3 并刪除該字母:word 變成 "abc" 且每個字母出現頻率都為 1 。
示例 2:
輸入:word = "aazz" 輸出:false 解釋:我們必須刪除一個字母,所以要么 "a" 的頻率變?yōu)?1 且 "z" 的頻率為 2 ,要么兩個字母頻率反過來。所以不可能讓剩余所有字母出現頻率相同。
提示:
2 <= word.length <= 100word只包含小寫英文字母。
02 知識點
- 雙重循環(huán)
- 哈希表set
03 我的解題思路
public class shuzu02 {
public static void main(String[] args) {
// 測試數據
String word = "aazz";
System.out.println(equalFrequency(word));
}
public static boolean equalFrequency(String word) {
// 先循環(huán)整個字符串,并記錄每個字符出現的頻率
char[] chars=word.toCharArray();
int[] nums=new int[26];
for (int i = 0; i < chars.length; i++) {
nums[chars[i]-'a']++;
}
// 雙重循環(huán)整個頻率記錄數組,思路是找到題設的題解(即字符只有兩種頻率,頻率高的字符需且僅需減一就等于頻率低的字符頻率)
for (int i = 0; i < 26; i++) {
// 遍歷整個數組,頻率為零則直接重新循環(huán),字符串長度大于等于2,只有字符串長度等于1時符合題設
if (nums[i]==0) {
continue;
}
// 頻率高的字符需且僅需減一,減一后若符合題解,整個數組頻率相同
nums[i]--;
HashSet<Integer> setsHashSet=new HashSet<Integer>();
// 再次循環(huán)整個數組,利用HashSet內元素不重復的特點
for (int j = 0; j < 26; j++) {
if (nums[j]>0) {
setsHashSet.add(nums[j]);
}
}
// 若HashSet內元素數量為1,則整個數組頻率相同,符合題設
if (setsHashSet.size()==1) {
return true;
}
// 不符合題設要把值改回原來,繼續(xù)循環(huán)
nums[i]++;
}
// 循環(huán)后找不到符合題解,符合false
return false;
}
}
到此這篇關于Java解決刪除字符使頻率相同問題的文章就介紹到這了,更多相關Java刪除字符頻率相同內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java?報錯?java.util.ConcurrentModificationException:?null?
這篇文章主要介紹了Java?報錯?java.util.ConcurrentModificationException:?null?的原因和解決方案,這個異常通常在多線程環(huán)境下出現,意味著在迭代過程中,集合或者映射的結構發(fā)生了變化,本文分享完美解決方案,需要的朋友可以參考下2023-07-07
IDEA安裝lombok插件設置Enable Annotation Processing后編譯依然報錯解決方法
這篇文章主要介紹了IDEA安裝lombok插件設置Enable Annotation Processing后編譯依然報錯解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-04-04
MAC?在類路徑或引導類路徑中找不到程序包?java.lang問題
這篇文章主要介紹了MAC?在類路徑或引導類路徑中找不到程序包?java.lang問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-11-11
Spring?Boot?集成并開發(fā)?Sa-token示例詳解
Sa-token是一款高可用的權限認證框架,他帶我們用最簡化的配置完成用?spring?security?需要進行大量配置的才能完成的工作,這篇文章主要介紹了Spring?Boot?集成并開發(fā)?Sa-token,需要的朋友可以參考下2023-06-06

