快轉到主要內容
  1. LeetCode/

LeetCode 1071: Greatest Common Divisor of Strings

·1 分鐘· ·
LeetCode Daily Easy 字串 數學 GCD
Wei Yi Chung
作者
Wei Yi Chung
Working at the contributing of open source, distributed systems, and data engineering.
目錄

基本資料
#

難易度: Easy 第一次嘗試: 2025-08-09

  • 總花費時間:00:00.00

解題思路
#

把「最大公因字串」想成一個基底子字串,重複拼接後可以同時組成 str1str2。答案一定是兩字串的共同前綴,且長度需同時整除兩字串長度。從長到短嘗試候選長度並逐一驗證。

解法
#

步驟概述:

  • m = len(str1)n = len(str2)
  • 定義 isValid(k):檢查 str1[:k] 作為基底,是否可重複形成兩字串。需滿足 m % k == 0n % k == 0,且重複後等於原字串。
  • k = m 由大到小枚舉,回傳第一個通過驗證的前綴;皆不通過則回傳空字串。

收穫
#

  • 合法答案長度必須同時整除 mn
  • str1 + str2 != str2 + str1,代表沒有共同基底,可快速判斷無解。
  • 可優化:只檢查 gcd(m, n) 的因數,或直接測試 str1[:gcd(m, n)]
  • 複雜度:最壞約 O((m + n) × d),dmn 的共同因數個數;空間 O(1)。

遇到的問題
#

相關文章

LeetCode 496: Next Greater Element I
·1 分鐘
LeetCode Daily Easy Array Stack Monotonic-Stack Hash Map Next Greater Element
單調遞減堆疊處理 nums2,預先建立下一個更大元素對照表,回答 nums1 查詢。
LeetCode 643: Maximum Average Subarray I
·1 分鐘
LeetCode Daily Easy Sliding Window
LeetCode 解題紀錄
LeetCode 1399: Count Largest Group
·1 分鐘
LeetCode Daily Easy
LeetCode 解題紀錄
LeetCode 2325: Decode the Message
·1 分鐘
LeetCode Daily Easy
LeetCode 解題紀錄
LeetCode 724: Find Pivot Index
·1 分鐘
LeetCode Daily Easy Prefix Sum
LeetCode 解題紀錄
LeetCode 1534: Count Good Triplets
·2 分鐘
LeetCode Daily Easy Prefix Sum
LeetCode 解題紀錄