Leetcode Note: Go - Repeated Substring Pattern
Repeated Substring Pattern - LeetCode
https://leetcode.com/problems/repeated-substring-pattern/
- Go 言語で取り組んだメモ
所感
- string s が特定文字列の繰り返しである場合 true, そうでない場合 false を return する
回答
golang simple 100% - LeetCode Discuss
https://leetcode.com/problems/repeated-substring-pattern/discuss/572476/golang-simple-100
func repeatedSubstringPattern(s string) bool {
search:
for i := 1; i <= len(s)/2; i++ {
for j := i; j+i <= len(s); j += i {
if s[j-i:j] != s[j:j+i] {
continue search
}
}
return len(s)%i == 0
}
return false
}
search:
というのを for loop で使っているけど、これなに?- ラベルというステートメントらしい
- 1st for loop
i := 1; i <= len(s)/2; i++
でループ
- 2nd for loop
j := i; j+i <= len(s); j += i
でループ- j は i でスタート
- j + i が len(s) 以下の間ループ
- カウント毎に j += i を行う
if s[j-i:j] != s[j:j+i]
- j を起点として
j-i:j
とj:j+i
のレンジを比較 - 内容が異なる場合 continue で return 処理をスキップ
- 内容が同じ場合
return len(s) % i == 0
- len(s) を i (繰り返しを発見した文字列の長さ) で割り切れたら return true
- 割り切れなかったら特定文字列の繰り返しではないため
- j を起点として
Label scopes
https://go.dev/ref/spec#Label_scopes
Labeled statements
https://go.dev/ref/spec#Labeled_statements