Is Subsequence
来源:互联网 发布:淘宝试用卖家不发货 编辑:程序博客网 时间:2024/05/18 03:07
Given a string s and a string t, check if s is subsequence of t.
You may assume that there is only lower case English letters in both s and t. t is potentially a very long (length ~= 500,000) string, and s is a short string (<=100).
A subsequence of a string is a new string which is formed from the original string by deleting some (can be none) of the characters without disturbing the relative positions of the remaining characters. (ie, “ace” is a subsequence of “abcde” while “aec” is not).
Example 1:
s = “abc”, t = “ahbgdc”
Return true.
Example 2:
s = “axc”, t = “ahbgdc”
Return false.
Follow up:
If there are lots of incoming S, say S1, S2, … , Sk where k >= 1B, and you want to check one by one to see if T has its subsequence. In this scenario, how would you change your code?
#include<vector>#include<random>#include<stack>#include<sstream>#include<list>#include<iomanip>#include<numeric>#include<algorithm>#include<map>#include<cstdlib>#include<string>#include<cstring>#include<cstdio>#include<limits>#include<cmath>#include<deque>#include<iostream>#include<unordered_map>#include<unordered_set>#include<queue>using namespace std; template<typename T>void pprintv(T arr){ for(int i=0;i<arr.size();++i) { cout<<arr[i]<<" "; } cout<<endl;}class Solution {public: bool isSubsequence(string s, string t) { if(s.empty())return true; if(t.empty())return false; int i=0; int lent=t.size(); int lens=s.size(); for(int j=0;j<lent;++j) { if(t[j]==s[i]) { ++i; if(i==lens)return true; } } return false; }};
如果有很多要搜索的string s,可以用先建立string t的索引,然后对其进行binary search。
class Solution {public: bool isSubsequence(string s, string t) { //build a record to store the index of each char in t vector<vector<int>> record(26); //add indexs for(int i = 0; i < t.size(); i++) { record[t[i]-'a'].push_back(i); } //check if each char in s is in the legal place int index = -1; for(int i = 0; i < s.size(); i++) { auto iter = upper_bound(record[s[i]-'a'].begin(), record[s[i]-'a'].end(), index); if(iter == record[s[i]-'a'].end()) return false; index = *iter; } return true; }};
- Is Subsequence
- Is Subsequence
- Is Subsequence
- Is Subsequence
- Is Subsequence
- Is Subsequence
- Is Subsequence
- Is Subsequence
- 【Leetcode】Is Subsequence
- 392. Is Subsequence
- [392]Is Subsequence
- 392.[LeetCode] Is Subsequence
- 392. Is Subsequence
- 392. Is Subsequence
- LeetCode[392] Is Subsequence
- LeetCode: Is Subsequence
- LeetCode 392 Is Subsequence
- LeetCode 392. Is Subsequence
- pow2gt函数
- Qlabel 自定义鼠标点击事件以及文本样式效果设计
- RPM使用方法
- Android Studio报错 Error: A library uses the same package as this project:
- malloc、calloc和realloc区别
- Is Subsequence
- 数据结构实验之数组二:稀疏矩阵
- YUM使用方法
- android developer tiny share-20161008
- 多线程之AtomicInteger的使用
- linux常见命令
- android学习--布局
- 随机排列算法及《算法导论》5.3节习题解答
- visualVm远程监控方法