使用python给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。使用input()接收输入,使用print()打印输出(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。 【示例 1】 输入:s = "abc", t = "ahbgdc" 输出:true 【示例 2】 输入:s = "axc", t = "ahbgdc" 输出:false
时间: 2023-07-19 11:03:33 浏览: 64
可以使用双指针解决这个问题,一个指针指向字符串 s 的当前字符,另一个指针指向字符串 t 的当前字符,然后不断移动指针,直到 s 的所有字符都被匹配。如果此时指针指向字符串 s 的末尾,则 s 是 t 的子序列,否则不是。
具体实现可以按照如下代码:
```python
s = input()
t = input()
m, n = len(s), len(t)
i = j = 0
while i < m and j < n:
if s[i] == t[j]:
i += 1
j += 1
if i == m:
print("true")
else:
print("false")
```
这里我们使用了两个指针 i 和 j,分别指向字符串 s 和 t 的当前字符,然后不断移动指针。当 s[i] == t[j] 时,说明字符匹配成功,移动 s 的指针 i,否则移动 t 的指针 j。最后判断指针 i 是否指向了 s 的末尾即可。
相关问题
给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。
可以使用双指针的方法来解决这个问题。我们定义两个指针 i 和 j 分别指向字符串 s 和 t 的开头,然后依次比较 s[i] 和 t[j]。如果它们相等,就同时将两个指针向后移动一位;否则只将 j 指针向后移动一位。最后,如果 i 指针移动到了 s 的末尾,就说明 s 是 t 的子序列。
具体的实现如下:
```python
def isSubsequence(s: str, t: str) -> bool:
i, j = 0, 0
while i < len(s) and j < len(t):
if s[i] == t[j]:
i += 1
j += 1
return i == len(s)
```
这个算法的时间复杂度是 O(m+n),其中 m 和 n 分别是 s 和 t 的长度。
给定两个字符串s和t判断s是否是t的子序列
题目描述:
给定两个字符串 s 和 t ,判断 s 是否为 t 的子序列。
示例:
s = "abc", t = "ahbgdc",返回 true
s = "axc", t = "ahbgdc",返回 false
思路:
遍历字符串 t,如果字符与 s 中的字符相同,则 s 中指针后移,直到 s 遍历完,返回 true。如果 t 遍历完,s 还没有遍历完,返回 false。
Python代码:
class Solution:
def isSubsequence(self, s: str, t: str) -> bool:
i, j = 0, 0
while i < len(s) and j < len(t):
if s[i] == t[j]:
i += 1
j += 1
return i == len(s)
阅读全文