zoukankan      html  css  js  c++  java
  • 寻找子串位置

    【题目描述】

    给出字符串a和字符串b,保证b是a的一个子串,请你输出b在a中第一次出现的位置。

    【输入描述】

    输入两行包含两个字符串a和b。

    【输出描述】

    仅一行一个整数。

    【样例输入】

    abcd

    bc

    【样例输出】

    2

    【数据范围及提示】

    字符串的长度均不超过100。

    源代码:
    
    #include<iostream>
    using namespace std;
    int m,n,k(0),next[1001];
    string s1,s2;
    int main() //KMP算法。
    {
        getline(cin,s1);
        getline(cin,s2);
        m=s1.size();
        n=s2.size();
        next[0]=0;
        for (int a=1;a<n;a++)
        {
            while (k>0&&s2[a]!=s2[k])
              k=next[k-1];
            if (s2[a]==s2[k])
              k++;
            next[a]=k;
        }
        k=0;
        for (int a=0;a<m;a++)
        {
            while (k>0&&s1[a]!=s2[k])
              k=next[k-1];
            if (s1[a]==s2[k])
              k++;
            if (k==n)
            {
                cout<<a-n+2;
                break;
            }
        }
        return 0;
    }
  • 相关阅读:
    C++ CheckListBox
    TreeView查获节点并选中节点
    创建文件自动重命名
    bat
    Edit显示行号
    FindStringExact
    Extended ComboBox添加图标
    C++ Combobox输入时自动完成
    C++ ComboBox基础
    C++ Code_combobox
  • 原文地址:https://www.cnblogs.com/Ackermann/p/5446504.html
Copyright © 2011-2022 走看看