日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

子串在主串中的位置

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

1.設(shè)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ù).?.?.*/?

轉(zhuǎn)載于:https://www.cnblogs.com/lanshy/p/3431142.html

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。