题目描述:

判断子序列 - 图1

代码实现:

  • 双指针法,快指针在t中遍历,给s一个慢指针flag,如果s[flag] === t[i],慢指针就向后移,并判断flag是否等于s的长度,如果最后等于长度,则为true,否则,为false。
  • 时间复杂度:O(n)
  1. /**
  2. * @param {string} s
  3. * @param {string} t
  4. * @return {boolean}
  5. */
  6. var isSubsequence = function(s, t) {
  7. var flag = 0
  8. if (s === '') return true
  9. for (var i = 0; i < t.length; i++ ) {
  10. if (t[i] === s[flag]) {
  11. flag++
  12. if (flag === s.length) {
  13. return true
  14. }
  15. }
  16. }
  17. return false
  18. };

判断子序列 - 图2