问题描述:读入两个字符串a和b,判断a是否是b的子串。如果是,计算a在b中出现了几次。
例如:如果a="aba", b="ababab",则a在b中出现了两次。如果a="abc",b="ababab",则a不是b的子串。
代码如下:
#include <iostream>
#include <cstring>
using namespace std;
char a[100], b[100];
int la, lb, count; //定义两个字符串的长度和计数器
void input_data() //输入数据的过程
{
cin >> a;
cin >> b;
}
void solve() //解决问题的过程
{
bool match; //表示从某一位置开始能否匹配
la = strlen(a);
lb = strlen(b);
count = 0;
for (int i=0; i<=lb-la; i++) // 循环变量i表示起始的位置
{
match = true;
for (int j=0; j<la; j++)
{
if (a[j]!= b[i+j]) //如果在某一位置无法匹配
{
match = false;
break;
}
}
if (match)
count++;
}
}
void output_data() //输出结果
{
if (count == 0)
cout << "a不是b的子串"<< endl;
else
cout << "a在b中出现了"<< count << "次"<< endl;
}
int main()
{
input_data();
solve();
output_data();
return 0;
}