由 n 個連線的字串 s 組成字串 s,記作 s = [s,n]。例如,[「abc」,3]=「abcabcabc」。
如果我們可以從 s2 中刪除某些字元使其變為 s1,則稱字串 s1 可以從字串 s2 獲得。例如,根據定義,「abc」 可以從 「abdbec」 獲得,但不能從 「acbbe」 獲得。
現在給你兩個非空字串 s1 和 s2(每個最多 100 個字元長)和兩個整數 0 ≤ n1 ≤ 106 和 1 ≤ n2 ≤106。現在考慮字串 s1 和 s2,其中 s1=[s1,n1] 、s2=[s2,n2] 。
請你找出乙個可以滿足使[s2,m] 從 s1 獲得的最大整數 m 。
示例:
輸入:s1 =
"acb"
,n1 =
4s2 =
"ab"
,n2 =
2返回:
2
首先要理解題意:s1是由n1個s1組成,s2由n2個s2組成,題中的意思是s1中有多少個s2,比如示例中的s1=「acbacbacbacb」,s2=「abab」,雖然讀懂了,但是做起來是沒有那麼容易的,使用暴力解法是會超時的,所以就抄了官方的解題思路學習一下,簡單的理解就是尋找迴圈節,讓後計算迴圈節的個數
class
solution
if(index==s2.
length()
)}if(map.
containskey
(index)))
;break
;//跳出迴圈
}else);
//儲存查詢過的s1,s2數量}}
int ans = map.
get(index)[1
]+(n1-map.
get(index)[0
])/map.
get(
"inloop")[
0]*map.
get(
"inloop")[
1];//到迴圈節結束是一共有多少個s2;
int surpluss1count =
(n1-map.
get(index)[0
])%map.
get(
"inloop")[
0];//剩餘的s1的數量
while
(surpluss1count>0)
if(index==s2.
length()
)}}return ans/n2;
}}
LeetCode 統計重複個數
q 由 n 個連線的字串 s 組成字串 s,記作 s s,n 例如,abc 3 abcabcabc 如果我們可以從 s2 中刪除某些字元使其變為 s1,則稱字串 s1 可以從字串 s2 獲得。例如,根據定義,abc 可以從 abdbec 獲得,但不能從 acbbe 獲得。現在給你兩個非空字串 s1 ...
leetcode解題之打家劫舍
你是乙個專業的小偷,計畫偷竊沿街的房屋。每間房內都藏有一定的現金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。給定乙個代表每個房屋存放金額的非負整數陣列,計算你在不觸動警報裝置的情況下,能夠偷竊到的最高金額。示例 1 輸入 1...
Leetcode 466 統計重複個數
定義由 n 個連線的字串 s 組成字串 s,即 s s,n 例如,abc 3 abcabcabc 另一方面,如果我們可以從 s2 中刪除某些字元使其變為 s1,我們稱字串 s1 可以從字串 s2 獲得。例如,abc 可以根據我們的定義從 abdbec 獲得,但不能從 acbbe 獲得。現在給出兩個非...