实现 strStr() 函数

题目:

给定一个 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;
}

猜你喜欢

转载自blog.csdn.net/xiaoqingqing521/article/details/81587960