Golang:
思路:这题乍一看蛮像什么最长公共子序列的,实际上,完全不是。只要你不会先入为主的认为它不简单,就可以很轻松的找到这题的诀窍。即,只要s是t的子序列,那么s的所有元素,都会在t中依次出现。
实现:于是这题就变成了道双指针问题,a指针指向s中的元素,b指针指向t中的元素,每当s和t符合,s++,t++。是子序列的话,s最终会走到len(s),不是的话,t会最终走到len(t)。
func isSubsequence(s string, t string) bool {
if len(s)==0 {
return true
}
if len(t)==0 {
return false
}
i,j:=0,0
for i<len(s)&&j<len(t){
if s[i]==t[j] {
i++
}
j++
}
if i>=len(s) {
return true
}else {
return false
}
}
有疑问加站长微信联系(非本文作者)