type
status
date
slug
summary
tags
category
password
URL
PublishDate
icon
给定字符串 s 和 t ,判断 s 是否为 t 的子序列。
字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,
"ace"
是"abcde"
的一个子序列,而"aec"
不是)。进阶:
如果有大量输入的 S,称作 S1, S2, ... , Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。在这种情况下,你会怎样改变代码?
致谢:
特别感谢 @pbrother 添加此问题并且创建所有测试用例。
示例 1:
示例 2:
提示:
0 <= s.length <= 100
0 <= t.length <= 10^4
- 两个字符串都只由小写字符组成。
ㅤ | a | h | b | g | d | c |
a | 1 | 0 | 0 | 0 | 0 | 0 |
b | 0 | 0 | 1 | 0 | 0 | 0 |
c | 0 | 0 | 0 | 0 | 0 | 1 |
解法1 贪心算法
我们初始化两个指针 i和 j,分别指向 s 和 t 的初始位置。每次贪心地匹配,匹配成功则 i和 j 同时右移,匹配 s的下一个位置,匹配失败则 j右移,i 不变,尝试用 t的下一个字符匹配 s。
最终如果 ii移动到 s 的末尾,就说明 s 是 t的子序列