〔Leetcode〕 1177. Can Make Palindrome from Substring (Medium)
[Leetcode] 1177. Can Make Palindrome from Substring (Medium)
概述
題目
https://leetcode.com/problems/can-make-palindrome-from-substring/
給一字串 s 與 queries,回傳一個由 True / False 組成之 array,其中 True 表示該 queries 時的啟、末與更動字母數,可讓該字串段變成回文,否則反之 False
心得
不會寫,看了解題才慢慢懂…QQ。從 BF 入手:每次 queries 抓前後 substring 再判斷是否改 k 次內可回文即能完成題目要求,但時間複雜度過高;進而判斷 substring、k 與可回文之關係,而又因題目是可以重新排列,故只需要判斷其奇偶穪即可,再透過 prefix 概念解之,queries 時兩兩對減就能滿足時間複雜度的要求
Prefix
思路
事先計算到第 i 位的 substring 奇偶性關係,而後前後對減判斷需修改的字母數是否 < k
程式
1 | class Solution(object): |
Complexity
Time Complexity: O(n)
多幾次走過多少 queries 數值
Space Complexity: O(n)
用一 array 存其 prefix
Bucket
思路
from ye15,將沒有特定範圍的 Hash 改成有特定範圍 (26 英文單字) 的 Bucket
程式
1 | class Solution(object): |
Complexity
Time Complexity: O(n)
多幾次走過多少 queries 數值
Space Complexity: O(n)
用一 array 存其 prefix
Bitwise
思路
from ye15,透過 Bitwise 運算來判斷 l, r 差異
程式
1 | class Solution(object): |
Complexity
Time Complexity: O(n)
多幾次走過多少 queries 數值
Space Complexity: O(n)
用一 array 存其 prefix
此文章版權所有,如有轉載,請註明來自原作者,且未經同意,禁止截取