Re: [閒聊] 每日leetcode已回收
我要吐了,狗屎題目
想了好久,難怪我上不了姑姑魯
1915. Number of Wonderful Substrings
有一個字串由'a'~'j'組成
請回傳wonderful substring的數量
如果該字串裡只有一個字元的數量是奇數那就是wonderful substring
思路:
有10種字元,而且只要紀錄字元數量是奇數還是偶數
那就用10個bit分別去紀錄,'a'是第0個字元以此類推
XOR 1<<(s[i]-'a')
並且用hashmap去紀錄到目前為止出現過的組合
如何找符合條件的子字串?
假設index 0~i的字元組合為 111000110
那就要去找到index i之前有沒有出現過一樣的組合
或是跟該字元組合剛好差1個bit : 111000110 XOR 011000110 = 1000000000
這樣就能找出來了
GOLANG CODE:
func wonderfulSubstrings(word string) int64 {
table:=[1024]int{}
table[0]=1 //字元組合剛好全部是偶數
val:=0
res:=0
for i:=0;i<len(word);i++{
val^= (1<<(word[i]-'a'))
res+=table[val]
for j:=0;j<10;j++{
idx:= val ^ (1<<j)
res+=table[idx]
}
table[val]++
}
return int64(res)
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.72.11.31 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1714473278.A.3ED.html
推
04/30 18:36,
1年前
, 1F
04/30 18:36, 1F
我每日都會解阿,已經150了
推
04/30 18:36,
1年前
, 2F
04/30 18:36, 2F
※ 編輯: JIWP (42.72.11.31 臺灣), 04/30/2024 18:37:24
→
04/30 18:39,
1年前
, 3F
04/30 18:39, 3F
推
04/30 18:39,
1年前
, 4F
04/30 18:39, 4F
→
04/30 18:39,
1年前
, 5F
04/30 18:39, 5F
→
04/30 18:39,
1年前
, 6F
04/30 18:39, 6F
→
04/30 18:40,
1年前
, 7F
04/30 18:40, 7F
→
04/30 18:41,
1年前
, 8F
04/30 18:41, 8F
→
04/30 18:41,
1年前
, 9F
04/30 18:41, 9F
推
04/30 18:52,
1年前
, 10F
04/30 18:52, 10F
討論串 (同標題文章)
完整討論串 (本文為第 173 之 1548 篇):