#1059. 子串位置

 別點最後一個連接

 

題目來自:http://www.51cpc.com/problem/1059html

題目描述

輸入字符串a和字符串b,並保證b是a的一個子串,輸出b在a中第一次出現的位置。c++

輸入格式

輸入兩字符串, 並保證b是a的一個子串數組

輸出格式

輸出出現的位置函數

樣例

Sample Input:ui

Tobeahahedhead 
head

Sample Output:spa



思路:找到相同的字符,子、母串同時延伸,若子串所有與母串延伸部分相同,輸出並結束,不然從新初始化,繼續尋找相同字符。

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\n", i + 1);//題目是從1開始標記,而數組是從1開始標記,因此要+1
            return 0;
            //題目說了必有解,因此找到便中止就行了
        }

    }
}

 

更多思路code

http://www.javashuo.com/article/p-pfwgeopu-em.htmlhtm

 

喜歡就點個贊吧!!blog

相關文章
相關標籤/搜索