天机阁

392. 判断子序列

2022-06-28 · 2 min read
LeetCode

题目

给定字符串 s 和 t ,判断 s 是否为 t 的子序列。

字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。

难度:🌟

示例 1:

输入:s = "abc", t = "ahbgdc"
输出:true

示例 2:

输入:s = "axc", t = "ahbgdc"
输出:false
 
提示:

  • 0 <= s.length <= 100
  • 0 <= t.length <= 104
  • 两个字符串都只由小写字符组成。

题解

这题比较简单,通过使用双指针p,i分别指向s,t,一边前进一边匹配子序列。

代码实现

func isSubsequence(s string, t string) bool {
	ns, nt := len(s), len(t)
	if ns > nt {
		return false
	}
	if ns == 0 {
		return true
	}
	var p = 0 // 指向 s 中的元素
	for i := 0; i < nt; i++ {
		if s[p] == t[i] { // 如果能找到匹配的元素
			p++
		}
		if p == ns {
			return true
		}
	}
	return false
}