leetcode每日一題 重複的子字串

2021-10-23 18:38:24 字數 1099 閱讀 8541

給定乙個非空的字串,判斷它是否可以由它的乙個子串重複多次構成。給定的字串只含有小寫英文本母,並且長度不超過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 ...