判断子序列一个字符串是否是另一个字符串的子序列
解释:字符串的一个子序列是原始字符串删除一些(也可以不删除)字符,不改变剩余字符相对位置形成的新字符串。
如,"ace"是"abcde"的一个子序列。
"aec"不是"abcde"的子序列。
示例 1:
输入:s1 = "ac", s2 = "ahbgdc"
输出:true
示例 2:
输入:s = "ax", t = "acdgbgdc"
输出:false
解析:
按照s2的字符串顺序去找,如果s1是s2的子序列,那么一定能找到对应的s1中的所有字符,
如果遍历了s2,而s1中还有剩余的长度没有找到,那么说明s1不是s2的子序列。
示例源码:
// Len_findChild.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
#include <string>
using namespace std;
bool JudgeChildStr(string s, string t)
{
int count = s.size() - 1;
for (int i = t.size() - 1; i >= 0 && count >= 0; i--)
{
if (t[i] == s[count])
{
count--;
}
}
if (count < 0)
{
return true;
}
return false;
}
int main()
{
string s1 = "ac";
string s2 = "ahbgdc";
bool bResult = JudgeChildStr(s1, s2);
printf("\n\ts1 = %s \n\ts2 = %s \n\tresult: %s\n", s1.c_str(), s2.c_str(), (bResult==0)?("false"):("true"));
s1 = "ax";
s2 = "acdgbgdc";
bResult = JudgeChildStr(s1, s2);
printf("\n\ts1 = %s \n\ts2 = %s \n\tresult: %s\n", s1.c_str(), s2.c_str(), (bResult == 0) ? ("false") : ("true"));
}
执行结果: