Google 面试题 | 检查子序列
给我们两个字符串,问我们第一个字符串是否是第二个字符串的子序列。
Example 1:
s =
Return
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 的评价。
Hard:
http://www.lintcode.com/problem/edit-distance/Hard:
http://www.lintcode.com/problem/distinct-subsequences/《九章算法班》
《系统设计班》
《Big Data 项目实战班》
《Java入门与基础算法班》
《算法强化班》
正在报名中!
报名登陆官网 www.jiuzhang.com
或点击文末“阅读原文”
九章算法版权所有,谢绝转载。
最新评论
推荐文章
作者最新文章
你可能感兴趣的文章
Copyright Disclaimer: The copyright of contents (including texts, images, videos and audios) posted above belong to the User who shared or the third-party website which the User shared from. If you found your copyright have been infringed, please send a DMCA takedown notice to [email protected]. For more detail of the source, please click on the button "Read Original Post" below. For other communications, please send to [email protected].
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。