时间限制:1秒 空间限制:32768K 热度指数:1291
本题知识点: Java工程师 C++工程师 快手 字符串 模拟
题目描述
我们定义字符串包含关系:字符串A=abc,字符串B=ab,字符串C=ac,则说A包含B,A和C没有包含关系。
输入描述:
两个字符串,判断这个两个字符串是否具有包含关系,测试数据有多组,请用循环读入。
输出描述:
如果包含输出1,否则输出0.
示例1
输入
abc ab
输出
1
思路:数据量小,没用到kmp,直接用双指针匹配就可以了。举个例子讲一下这个算法。
(定义变量 i 指向母串第一个字符)母串:a b b c d a
|
(定义变量 j 指向子串第一个字符)子串:b c d
1、从第一个字符开始匹配,匹配失败,i++,对母串的下一个字符进行判断
母串:a b b c d a
|
子串:b c d
2、继续匹配,匹配成功,两个指针同时前进,i++;j++;继续判断
母串:a b b c d a
|
子串:b c d
3、匹配失败,要将母串的指针指向原来的位置+1,即 i=i-j+1 ,子串要从头开始匹配,即 j=0
母串:a b b c d a