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_index が len(s) と同じであれば s の全要素が順序通りに登場したと判定できる

順序考慮がどうすれば良いのか独力では解けず・・・同時にループしつつカウンタを使えばよかったのか・・・