給定乙個非空的字串,判斷它是否可以由它的乙個子串重複多次構成。給定的字串只含有小寫英文本母,並且長度不超過10000。
示例 1:
輸入: "abab"
輸出: true
解釋: 可由子字串 "ab" 重複兩次構成。
示例 2:
輸入: "aba"
輸出: false
示例 3:
輸入: "abcabcabcabc"
輸出: true
解釋: 可由子字串 "abc" 重複四次構成。 (或者子字串 "abcabc" 重複兩次構成。)
如果乙個長度為 n的字串 s 可以由它的乙個長度為 n』 的子串 s』重複多次構成,那麼:
n 一定是 n』 的倍數;
s』一定是 s 的字首;
對於任意的 i∈ [n』, n),有 s[i] = s[i-n』]。
也就是說,s 中長度為 n』 的字首就是 s』 ,並且在這之後的每乙個位置上的字元 s[i],都需要與它之前的第 n』 個字元 s[i-n』]相同。
因此,我們可以從小到大列舉 n』 ,並對字串 s 進行遍歷,進行上述的判斷。
public
static
void
main
(string[
] args)
public
static
boolean
repeatedsubstringpattern
(string s)}if
(jieguo)}}
return
false;}
}
package main
import
"fmt"
func
main()
func
repeatedsubstringpattern
(s string
)bool
}if jieguo }}
return
false
}
每日一題 LeetCode
在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數。示例 1 輸入 7,5,6,4 輸出 5 限制 0 陣列長度 50000 思想是 分治演算法 所有的 逆序對 於 3 個部分 左邊區間的逆序對 右邊區間的逆序對 橫跨兩個區間的...
每日一題 LeetCode之去除重複字母
給你乙個僅包含小寫字母的字串,請你去除字串中重複的字母,使得每個字母只出現一次。需保證返回結果的字典序最小 要求不能打亂其他字元的相對位置 示例 1 輸入 bcabc 輸出 abc 示例 2 輸入 cbacdcbc 輸出 acdb 思路 使用棧,並且要使字典序最小,若棧頂元素大於當前元素並且棧頂元素...
Leetcode每日一題 無重複字元的最長子串
給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwkew 輸出 3 ...