[YTU](2278)判断是否是子串(串) ---字符串匹配(串)

2278: 判断是否是子串(串)

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 30  Solved: 15
[Submit][Status][Web Board]

Description

设s、t为两个字符串,分别放在两个一维数组中,m、n分别为其长度,判断t是否为s的子串。如果是,输出子串所在位置(第一个字符),否则输出0。

Input

输入  长度m和n,字符串s和t

Output

子串所在的位置

Sample Input

5 3
adsff
dsf

Sample Output

2



AC代码:暴力匹配算法
#include<iostream>
#include<cstring>
using namespace std;
int m,n;
int violentMatch(char *s,char *p)
{
    int i=0;
    int j=0;
    while(i<m && j<n)
    {
        if(s[i]==p[j])
        {
            i++;
            j++;
        }
        else if(s[i]!=p[j])
        {
            i=i-(j-1);
            j=0;
        }
    }
    if(j==n)
        return i-j+1;
    else
        return 0;
}
int main()
{
    char s[100];
    char p[100];
    cin>>m>>n;
    for(int i=0;i<m;i++)
        cin>>s[i];
    for(int i=0;i<n;i++)
        cin>>p[i];
    int r=violentMatch(s,p);
    cout<<r<<endl;
    return 0;
}


posted @ 2017-08-23 09:45  WangMeow  阅读(561)  评论(0编辑  收藏  举报