若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。


  • 运维

  • 前端

  • 编程

  • 随笔

  • hust-oj

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

发表于 2017-10-06   |   分类于 HUSTOJ   |   阅读次数 1,302

题目描述

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

输入

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

输出

子串所在的位置

样例输入

5 3
adsff
dsf

样例输出

2

参考代码

#include<stdio.h>
#include<malloc.h>
typedef struct 
{
    int *begin;
    int n;
    int size;
}
LIST;
LIST * init_list(int m) 
{
    LIST *p;
    p=(LIST*)malloc(sizeof(LIST));
    if(p!=NULL) 
    {
        p->begin=(int*)malloc(m*sizeof(int));
        if(p->begin!=NULL) 
        {
            p->n=0;
            p->size=m;
            return p;
        } else
                    free(p);
    }
    printf("out of space!n"); 
    return NULL; 
} 
int main()
{
    LIST *p1,*p2;
    int m,n,i,j,t,k;
    char c;
    scanf("%d%d",&m,&n);
    p1=init_list(m);
    p2=init_list(n);
    getchar();
    for(i=0;i<m;i++)
    {
        scanf("%c",&c);
        p1->begin[i]=c;
        p1->n++;
    }
    getchar();
    for(i=0;i<n;i++)
    {
        scanf("%c",&c);
        p2->begin[i]=c;
        p2->n++;
    }
    for(i=0;i<m;i++)
    {
        t=0;
        for(j=i,k=0;j<n+j&&j<m;j++,k++)
        {
            if(p1->begin[j]==p2->begin[k])
                t++;
            else
                break;
        }
        if(t==n)
        {
            printf("%dn",i+1);
            return 0;
        }
    }
    printf("0n");
    return 0;
}

解析

暂无

hustoj

发表评论 取消回复

邮箱地址不会被公开。 必填项已用*标注

*
*


hoxis wechat
著作权归作者所有
站点更新说明
  • 文章目录
  • 站点概览
若是凉夜已成梦

若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。

1904 日志
6 分类
12 标签
RSS
weibo github twitter facebook

友情链接

Dreams孤独患者 原站点 Skip
© 2017 若是凉夜已成梦
Powered by WordPress | 已运行
Theme By NexT.Mist