日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

子串在主串中的位置

發(fā)布時間:2025/5/22 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 子串在主串中的位置 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
假設主串 str1=string.LastIndexOf子串str2=Index。我們要尋找str2在str1中的首個出現(xiàn)位置

1.設i用于主串str1中當前位置下標值,j用于子串str2中當前位置下標值。

2.首先我們比較str1[1]與str2[1],如果相同的話,可能子串就開始了。

3.如果不相等,那么子串仍然是從str2[1]開始,而主串str1則以str1[2]與其比較。即i退回到上次匹配首位的下一位?

4.如果連續(xù)出現(xiàn)strlen(str2)次或以上匹配,那么就找到子串了,此時的j必然等于子串長度strlen(str2)。

?

#include<stdio.h>
#define?MAXSIZE?30
#include<string.h>
int?FindSubIndex(char?str1[],char?str2[])
{
????int?i,j;??????//?j用于子串T中當前位置下標值
????i?=?0;j?=?0;??//?i用于主串S中當前位置下標值
????while(i?<?strlen(str1)?&&?j?<?strlen(str2))
????{
????????if(str1[i]?==?str2[j])
????????{
????????????++i;
????????????++j;
????????}
????????else
????????{
????????????j?=?0;????????????//j退回到子串T的首位
????????????i?=?i?-?j?+?1;???//?i退回到上次匹配首位的下一位?
????????}
????}
????if(j==strlen(str2))
????{
????????return?i?-?strlen(str2)?+?1;
????}
????else
????{
????????return?0;
????}
}
int?main()
{
????int?Index?=?0;
????char?str1[MAXSIZE];
????char?str2[MAXSIZE];

????//puts(str1);
????
//puts(str2);
????printf("主串str1為:?");
????scanf("%s",str1);
????printf("子串str2為:?");
????scanf("%s",str2);
????Index?=?FindSubIndex(str1,str2);
????printf("str1的第%d個字母起和str2第一次匹配\n",Index);????
????return?0;
}
/*
主串str1為:?string.LastIndexOf
子串str2為:?Index
str1的第12個字母起和str2第一次匹配

請按任意鍵繼續(xù).?.?.*/?

轉載于:https://www.cnblogs.com/lanshy/p/3431142.html

總結

以上是生活随笔為你收集整理的子串在主串中的位置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。