编写一个程序,判定一个字符串是否为另外一个字符串的子串,若是,返回子串在主串中的位置。要求不适用strstr函数,自己编写一个子函数实现。 要求不使用strstr函数。
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
string a,b;
int main()
{
int i,j,l,f;
//输入两个字符串
cin>>a>>b;
for(i=0;i<a.length();i++)//遍历字符串a
{
//如果a的长度-i小于了b的长度,那么不需要再进行比较了
if(a.length()-i<b.length()) break;
f=1;//f先置为1
for(j=0;j<b.length();j++)//遍历b字符串
{
if(a[i+j]!=b[j])
{
f=0;
break;
}
}
if(f==1)
{
cout<<i<<endl;
return 0;
}
}
cout<<-1<<endl;
return 0;
}
可以自己一位一位来进行比对
#include "iostream"
#include "string"
using namespace std;
int isSubString(string originString ,string subString) {
int position = -1;
for(int i=0;i<originString.length()-subString.length()+1;i++) {
for (int j=0; j<subString.length(); j++) {
if (originString[i+j]!=subString[j]) {
break;
}
if (j==subString.length()-1) {
position = i;
return position;
}
}
}
return position;
}
int main() {
string originString = "aabbccdd";
string subString = "cd";
int position = isSubString(originString,subString);
if (position == -1) {
cout<<"不是子串"<<endl;
}
else {
cout<<"是子串,位置为:";
cout<<position<<endl;
}
return 0;
}