• CODE[VS]-寻找子串位置-字符串处理-天梯青铜


    题目描述 Description

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

    输入描述 Input Description

    仅一行包含两个字符串a和b

    输出描述 Output Description

    仅一行一个整数

    样例输入 Sample Input

    abcd bc

    样例输出 Sample Output

    2

    数据范围及提示 Data Size & Hint

    字符串的长度均不超过100

    Pascal用户请注意:两个字符串之间可能包含多个空格

    思路:因为它是用一行来输入两个字符串,所以必须得要把字符串拆分,我的思路是用一个字符串先存储整个串,再拆分成两个(这个很麻烦,部分聪明的童鞋已经想到边输入边存,这也是蛮好的),然后将子串中的第一个字母提出来,循环搜索字符串里面有没有这个字母,有的话判断这个字母后面的所有字母是不是与字符串中的一一对应,用一个ans来记录相同的字母数量,最后判断ans是否等于子串的长度(即子串与字符串中的一小段完全匹配),就可以输出了

    代码如下:

     1 #include <stdio.h>
     2 #include <string.h>
     3 int main()
     4 {
     5     char a[101],x[101],y[101];
     6     int len,i,j,o=0;
     7     int ans=0;
     8     gets(a);
     9     len=strlen(a);
    10     for(i=0;i<len;i++)//拆分存入字符串 
    11     {
    12         if(a[i]!=' ')
    13         {
    14             x[i]=a[i];
    15         }
    16         else 
    17         {
    18             x[i]='';
    19             break;
    20         }
    21     }
    22     for(j=i;j<len;j++)//拆分存入子串 
    23     {
    24         if(a[j]!=' ')
    25         {
    26             y[o]=a[j];
    27             o++;
    28         }
    29     }
    30     y[o]='';//末尾加上结束 
    31     for(i=0;i<strlen(x);i++)
    32     {
    33         if(x[i]==y[0])//用第一个字母来找,如果匹配,判断后面的字母 
    34         {
    35             for(j=0;j<strlen(y);j++)
    36             {
    37                 if(x[i+j]==y[j])//如果后面的字母与字符串匹配,ans++ 
    38                 {
    39                     ans++;
    40                 }
    41                 else //如果遇到一个不匹配的,结束,继续找 
    42                 {
    43                     break;
    44                 }
    45                 if(ans==strlen(y))//判断子串是否完全符合字符串中的一段(即子串已经全部搜索完,就是正确答案) 
    46                 {
    47                     printf("%d
    ",i+1);//输出子串第一个字母在字符串中的位置 
    48                     return 0;
    49                 }
    50             }
    51         }
    52     } 
    53     return 0;
    54 }
  • 相关阅读:
    gojs常用API (中文文档)
    webpack的安装
    win10如何将wps设置成默认应用
    gojs常用API-画布操作
    Access中替代case when的方法 .
    C++ 11 中的右值引用
    形参前的&&啥意思?
    【C语言学习笔记】字符串拼接的3种方法 .
    java项目打jar包
    教你用DrawLayout 实现Android 侧滑菜单
  • 原文地址:https://www.cnblogs.com/geek-007/p/5671855.html
Copyright © 2020-2023  润新知