1941. Check if All Characters Have Equal Number of Occurrenc

更新於 發佈於 閱讀時間約 2 分鐘


英文版點我中文版點我


↑看個小廣告,支持好內容↑



❶ Hash Table (索引、桶子)

所有字符必須出現一樣多次,有關計數的任務,就交給索引吧!先遍歷字串 s 做統計,再檢查索引共有幾種值,時間花費 O(2n)

小寫字母就 26 個,因此索引頂多就 26 個 key,空間複雜度 O(26)→O(1)。由於關注的是計數頻率,我們也可開一個長度 26 的陣列 (我習慣稱它桶子),結果會相同:


// s="abacbc"

1. 索引
- 計數結果:map[a]=2, map[b]=2, map[c]=2
- 頻率陣列:Object.values(map) // [2,2,2]

2. 桶子
- 計數結果:arr[0]=2, arr[1]=2, arr[2]=2
- 頻率陣列:arr.filter(x=>x>0) //​ [2,2,2]


次數必須一致,轉成集合檢查 new Set(頻率陣列).size=1 就行了。


❷ Follow-Up: Counting

雖然這題很好 pass,但我蠻好奇有沒有不靠索引的解法 XD

假設把字串排成 aabbcc,當一看到 b 就能肯定 a 出現完畢,再來結算其頻率是否有重複,邏輯上似乎說得通:

// 假設s已依字母順序排好

var areOccurrencesEqual = function(s) {
let freq=0, curr=1;

for(let i=1; i<s.length; i++){
if(s[i]==s[i-1]){
curr++;
}else{
// 以首個字母的次數作為基準
if(freq==0){freq=curr);
// 若出現頻率與基準值不同 => false
if(freq!=curr){return false};
curr=1;
}
}
// 檢查最後一個字母,並排除單一字母的狀況
return freq==curr || freq==0;
};


撇除掉排列字母,這樣只要跑一次迴圈就能完成,有沒有挺像之前按計數器的感覺呢?遵循相似的思維,這題確實也能用雙指針來解沒錯!今天篇幅夠了,就當回家作業吧 (X



  • 本題分類標籤:Hash TableStringCounting
  • 本題正解率=77.0%

❤️ 若內容對你實用,歡迎追蹤本專題,或小額贊助支持~
⭐ 這是我的第 16 篇刷題筆記,完整解題索引看這裡 → Here

avatar-img
54會員
59內容數
我要成為 LeetCode 王!快跟我一起踏上旅程!
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
LeetCode King 的其他內容
究竟誰是 i、誰又是 j?矩陣問題務必趁腦子清楚時才解 XDD
總是記不順雙指針法的程序?畫圖跑一次給你看!
題目到底要我們做什麼?閱讀素養有多重要,試試這題就知道!
老是從頭重算可不是好法子,把加過的累積值存起來備用,這才符合 Prefix Sum 的精神!
三種做法所花的時間都不同,請試著一步步優化,在只跑一次迴圈下完成吧!
你聽過 "LIFO" 嗎?搞不好在解這題時你已經不知不覺用到它了喔 XD
究竟誰是 i、誰又是 j?矩陣問題務必趁腦子清楚時才解 XDD
總是記不順雙指針法的程序?畫圖跑一次給你看!
題目到底要我們做什麼?閱讀素養有多重要,試試這題就知道!
老是從頭重算可不是好法子,把加過的累積值存起來備用,這才符合 Prefix Sum 的精神!
三種做法所花的時間都不同,請試著一步步優化,在只跑一次迴圈下完成吧!
你聽過 "LIFO" 嗎?搞不好在解這題時你已經不知不覺用到它了喔 XD
你可能也想看
Google News 追蹤
Thumbnail
大家好,我是woody,是一名料理創作者,非常努力地在嘗試將複雜的料理簡單化,讓大家也可以體驗到料理的樂趣而我也非常享受料理的過程,今天想跟大家聊聊,除了料理本身,料理創作背後的成本。
Thumbnail
哈囉~很久沒跟各位自我介紹一下了~ 大家好~我是爺恩 我是一名圖文插畫家,有追蹤我一段時間的應該有發現爺恩這個品牌經營了好像.....快五年了(汗)時間過得真快!隨著時間過去,創作這件事好像變得更忙碌了,也很開心跟很多厲害的創作者以及廠商互相合作幫忙,還有最重要的是大家的支持與陪伴🥹。  
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
希望透過條列和簡介,可以更方便讀者選讀自己偏好的主題。
Thumbnail
手寫版,有寫錯或看不懂的地方,都可以在底下留言給我。 感謝!
Thumbnail
112年國中教育會考數學科詳解 手寫版,有寫錯或看不懂的地方,都可以在底下留言給我。 感謝!
Thumbnail
給定一個字串陣列,請把它們所共有的字元伴隨著出現次數輸出。這篇文章介紹如何使用字典統計出現次數,和字典取交集的方法來解決此問題。並提供了複雜度分析和關鍵知識點。
Thumbnail
高中數學主題練習—求等差數列某項與等差級數
Thumbnail
題目敘述 題目會給定一個整數陣列arr,要求我們判斷是否每個元素的出現次數都不同? 題目的原文敘述 測試範例 Example 1: Input: arr = [1,2,2,1,1,3] Output: true Explanation: The value 1 has 3 occurre
Thumbnail
大家好,我是woody,是一名料理創作者,非常努力地在嘗試將複雜的料理簡單化,讓大家也可以體驗到料理的樂趣而我也非常享受料理的過程,今天想跟大家聊聊,除了料理本身,料理創作背後的成本。
Thumbnail
哈囉~很久沒跟各位自我介紹一下了~ 大家好~我是爺恩 我是一名圖文插畫家,有追蹤我一段時間的應該有發現爺恩這個品牌經營了好像.....快五年了(汗)時間過得真快!隨著時間過去,創作這件事好像變得更忙碌了,也很開心跟很多厲害的創作者以及廠商互相合作幫忙,還有最重要的是大家的支持與陪伴🥹。  
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
希望透過條列和簡介,可以更方便讀者選讀自己偏好的主題。
Thumbnail
手寫版,有寫錯或看不懂的地方,都可以在底下留言給我。 感謝!
Thumbnail
112年國中教育會考數學科詳解 手寫版,有寫錯或看不懂的地方,都可以在底下留言給我。 感謝!
Thumbnail
給定一個字串陣列,請把它們所共有的字元伴隨著出現次數輸出。這篇文章介紹如何使用字典統計出現次數,和字典取交集的方法來解決此問題。並提供了複雜度分析和關鍵知識點。
Thumbnail
高中數學主題練習—求等差數列某項與等差級數
Thumbnail
題目敘述 題目會給定一個整數陣列arr,要求我們判斷是否每個元素的出現次數都不同? 題目的原文敘述 測試範例 Example 1: Input: arr = [1,2,2,1,1,3] Output: true Explanation: The value 1 has 3 occurre