Leetcode Note: Go - Is Subsequence
Is Subsequence - LeetCode
https://leetcode.com/problems/is-subsequence/
- Go 言語で取り組んだメモ
所感
- string s, t が連携されて s が t に含まれるかで bool を return
- この subsequence とは、文字列として含まれていることではなく、各文字が含まれていれば OK ということ
- ただし順序は考慮する必要がある
- 例: s => abc, t => ahbgdc なら、 abc は t に含まれていないが a, b, c はそれぞれ含まれているので OK と判定し true を return する
- 例: s => acb, t => ahbgdc なら、 t に a, c, b が含まれているものの順序は a, b, c なので subsequence は無いと判定し false を return する
回答
[C / C++ / Java / Python / JS / Go / Kotlin / C#] Easy and Short Solutions - LeetCode Discuss https://leetcode.com/problems/is-subsequence/discuss/1426347/C-C%2B%2B-Java-Python-JS-Go-Kotlin-C-Easy-and-Short-Solutions
func isSubsequence(s string, t string) bool {
s_index, t_index := 0, 0
for s_index < len(s) && t_index < len(t) {
if s[s_index] == t[t_index] {
s_index++
}
t_index++
}
return s_index == len(s)
}
- s, t を同時にループ
- s と t の要素が同じであれば s_index をインクリメント
- これで s_index をカウンタとして扱っている
- s と t の要素が同じであれば s_index をインクリメント
- ループ終了後に s_index が len(s) と同じであれば s の全要素が順序通りに登場したと判定できる
順序考慮がどうすれば良いのか独力では解けず・・・同時にループしつつカウンタを使えばよかったのか・・・