专栏名称: 九章算法
专业的北美IT求职经验分享、技术交流社区,帮助你找到好的IT工作。由硅谷顶尖IT企业工程师维护。提供专业的算法培训/面试咨询,官网 www.jiuzhang.com
目录
相关文章推荐
算法爱好者  ·  奔驰中国裁员赔偿 ... ·  11 小时前  
算法爱好者  ·  北大发现,有句话让 DeepSeek ... ·  11 小时前  
九章算法  ·  「九点热评」Meta新员工都是裁员刀下鬼! ·  2 天前  
九章算法  ·  终极版捡漏!大厂system ... ·  3 天前  
九章算法  ·  狗家“悬浮人”,跳槽成功 ·  2 天前  
51好读  ›  专栏  ›  九章算法

Google 面试题 | 检查子序列

九章算法  · 公众号  · 算法  · 2017-04-13 07:10

正文


题目描述

给我们两个字符串,问我们第一个字符串是否是第二个字符串的子序列。


样例


Example 1:
s =
"abc" , t = "ahbgdc"
Return true .


Example 2:
s =
"axc" , t = "ahbgdc"
Return false .


解题思路

参考程序

参考程序


这道题目需要判断第一个是否为第二个字符串的子序列。


这里我们可以用到双指针移动的方法。 以 i 作为第一个字符串 s 的指针,j 为第二个字符串 t 的指针。


一开始 i 和 j 都指向字符串的开头,然后每一次我们都将j往后移动一个单位,然后判断 s[i] 是否和 t[j] 相等,如果相等我们就将 i 往后移动一个单位。


这样如果最后 i 能移动到 s 的最后一位,那么说明 s 是 t 的子序列,否则不是,因为我们每一步都在检查是否有重复都子序列,指针 j 会检查 t 里面所有可能出现在 s 里面的子序列。 总共复杂度为 O(s.length + t.length)。


参考程序


1. java 版本



2. c++ 版本



3. python 版本



面试官角度分析


这道题就是简单的两个指针问题考察,能够快速想到双指针并且能够正确估算出时间复杂度,那么此题就可以得到 hire 的评价。


题目答案链接


http://www.jiuzhang.com/solutions/is-subsequence/

相关题目


Hard: http://www.lintcode.com/problem/edit-distance/
Hard: http://www.lintcode.com/problem/distinct-subsequences/


推荐阅读







请到「今天看啥」查看全文