zoukankan      html  css  js  c++  java
  • #1059. 子串位置

     别点最后一个链接

    题目来自:http://www.51cpc.com/problem/1059

    题目描述

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

    输入格式

    输入两字符串, 并保证b是a的一个子串

    输出格式

    输出出现的位置

    样例

    Sample Input:

    Tobeahahedhead 
    head
    

    Sample Output:

    11

    思路:

    找到相同的字符,子、母串同时延伸,若子串全部与母串延伸部分相同,输出并结束,否则重新初始化,继续寻找相同字符。

    代码:

    #include<stdio.h>
    #include<string.h>
    
    char a[1000], b[1000];//如果数组的范围较大,可将其放到主函数外部进行声明。
    
    int main() {
        int c, j;
        scanf("%s%s", a, b);//%s输入到字符串数组中时,遇空格便停止。
        //注意:输入的到字符串数组中时,不要打    &     。
        int m = strlen(b);//获取子串的大小
    
        for (int i = 0;i < strlen(a);i++)
        {
            c = i, j = 0;//初始化
    
            while (j < m && a[c] == b[j]) //相同便继续,直到不同或者子串全部相同停止。
                c++, j++;
    
            if (j == m) {
                printf("%d
    ", i + 1);//题目是从1开始标记,而数组是从1开始标记,所以要+1
                return 0;
                //题目说了必有解,所以找到便停止就好了
            }
    
        }
    }

    更多思路

    https://www.cnblogs.com/Attacking-vincent/p/12720675.html

    喜欢就点个赞吧!!

    出处:https://www.cnblogs.com/Attacking-vincent/

  • 相关阅读:
    du 命令
    iostat 命令
    sar 命令
    mkdir 命令
    time 命令
    date 命令
    history 命令
    vmstat 命令
    pmap 命令
    df 命令
  • 原文地址:https://www.cnblogs.com/Attacking-vincent/p/12720837.html
Copyright © 2011-2022 走看看