给定两个字符串 S 和 T ,判断 S 是否是 T 的子序列。
即是否可以从 T 删除一些字符转换成 S。
数据范围: , ,保证字符串中仅含有小写字母
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(); } };