给定两个字符串 S 和 T ,判断 S 是否是 T 的子序列。
即是否可以从 T 删除一些字符转换成 S。
数据范围:
,
,保证字符串中仅含有小写字母
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param S string字符串
* @param T string字符串
* @return bool布尔型
*/
public boolean isSubsequence (String S, String T) {
int lenS = S.length();
int lenT = T.length();
int i = 0;
int j = 0;
while (i < lenS && j < lenT) {
char chS = S.charAt(i);
char chT = T.charAt(j);
if (chS == chT) {
i++;
j++;
} else {
j++;
}
}
if (i == lenS) {
return true;
}
return false;
}
} import java.util.*;
public class Solution {
/**
*
* S字符先后顺序和T中一致
*
* @param S string字符串
* @param T string字符串
* @return bool布尔型
*/
public boolean isSubsequence (String S, String T) {
// write code here
if (S.equals(T) || T.contains(S)) return true;
LinkedList<Character> linkedList = new LinkedList<>();
//一次进入队列
for (int i = 0; i < S.length(); i++) {
linkedList.offer(S.charAt(i));
}
//遍历T
for (int i = 0; i < T.length(); i++) {
if (linkedList.isEmpty()) return true;
//遇到相同字符弹出
if (T.charAt(i) == linkedList.peek()) {
linkedList.poll();
}
}
//最后判断队列是否为空
return linkedList.isEmpty();
}
}
public boolean isSubsequence (String S, String T) {
// write code here
if(T.indexOf(S) != -1) {
return true;
}
char[] arr = S.toCharArray();
char[] brr = T.toCharArray();
int temp = 0;
boolean flag = false;
for (int i = 0; i < arr.length; i++) {
for (int j = temp; j < brr.length; j++) {
if (arr[i] == brr[j]) {
System.out.println(j);
flag = true;
temp ++;
break;
} else {
flag = false;
}
}
}
return flag;
}
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param S string字符串
* @param T string字符串
* @return bool布尔型
*/
public boolean isSubsequence (String S, String T) {
// write code here
if(S.length() > T.length()) return false;
int p1 = 0, p2 = 0;
while(p1 < S.length() && p2 < T.length()){
if(S.charAt(p1) == T.charAt(p2)){
p1++;
p2++;
}else{
p2++;
}
}
if(p1 == S.length()) return true;
return false;
}
}
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param S string字符串
* @param T string字符串
* @return bool布尔型
*/
bool isSubsequence(string S, string T) {
// write code here
int maxLen = 0;
vector<vector<int>> dp(S.length() + 1, vector<int>(T.length() + 1));
for(int i = 1; i <= S.length(); i++){
for(int j = 1; j <= T.length(); j++){
if(S[i - 1] == T[j - 1]){
dp[i][j] = dp[i - 1][j - 1] + 1;
}else{
dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);
}
maxLen = maxLen > dp[i][j]? maxLen: dp[i][j];
}
}
return maxLen == S.length();
}
};