题目:
给定一个 h 字符串和一个 k字符串,在 h 字符串中找出 k 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。
示例:
示例 1:
输入: h = "hello", k = "ll" 输出: 2
示例 2:
输入: h = "aaaaa", k = "bba" 输出: -1
代码:
#include<iostream>
#include<string>
using namespace std;
int main()
{
string h,k;
cout<<"Please input h:"<<endl;
cin>>h;
cout<<"Please input k:"<<endl;
cin>>k;
int a,b,m,n,q;
a=h.length();
b=k.length();
/实现strSTR分两种情况,一种是h字符串里面包含这k字符串的开头字母,另一种是h字符串里面不包含这k字符串的开头字母(这种情况直接输出-1/
for(int i=0;i<a;i++)
{
if(k[0]==h[i])
{
q=i;
n=i;
m=0; /当h字符串里面包含这k字符串的开头字母,使m赋值为0,并且break推出循环/
break;
}
}
if(m==0)
{
for(int j=0;j<b;j++,q++)
{
if(h[q]!=k[j]) /检验k字符串里面的每一个字母是否都和h相同,只要发现不同则直接输出-1,然后退出循环/
{
cout<<"-1"<<endl;
break;
}
if(j==b-1) /所有都检查完毕,无任何错误,则输出n值/
{
cout<<n<<endl;
}
}
}
else
{
cout<<"-1"<<endl;
}
return 0;
}