柯林wap建站程序个人版,备案号怎么放置到网站,一张简单的网页多少钱,怎么把百度到自己的网站1.题目
给定字符串 s 和 t #xff0c;判断 s 是否为 t 的子序列。
字符串的一个子序列是原始字符串删除一些#xff08;也可以不删除#xff09;字符而不改变剩余字符相对位置形成的新字符串。#xff08;例如#xff0c;ace是abcde的一个子序…1.题目
给定字符串 s 和 t 判断 s 是否为 t 的子序列。
字符串的一个子序列是原始字符串删除一些也可以不删除字符而不改变剩余字符相对位置形成的新字符串。例如ace是abcde的一个子序列而aec不是。
进阶
如果有大量输入的 S称作 S1, S2, ... , Sk 其中 k 10亿你需要依次检查它们是否为 T 的子序列。在这种情况下你会怎样改变代码
2.示例 3.思路
双指针: 设置两个指针一个T指针指向T并且遍历t另一个有效位指针Sindex指向s初始位置当数组中两者值相等时候S指针下移一位当有效位指针一旦到达s字符串长度则返回true否则返回false
4.代码
LeetCode代码
class Solution {public boolean isSubsequence(String s, String t) {int sIndex 0;if(s.length() 0){return true;}for (int i0;it.length();i){if (s.charAt(sIndex)t.charAt(i)){sIndex;if(sIndex s.length()){return true;}}}return false;}
} 案例详细代码
package LeetCode11;public class javaDemo {public static void main(String[] args) {String s a;String t ahbgdc;boolean flag false;// S字符串有效位指针int sIndex 0;
// 判断是否为特殊情况即s若为空则直接输出trueif (s.equals()){System.out.println(true);}else {
// 不是特殊情况则进行双指针判断for (int i0;it.length();i){
// 判断是否值相等if (s.charAt(sIndex)t.charAt(i)){sIndex;
// 如果sIndex遍历完也就意味着存在子序列输出flag并即使跳出防止越界if (sIndex s.length()){flag true;break;}}}}System.out.println(flag);}
}时间复杂度为O(n),空间复杂度为O(1)