首页 > 其他分享 >28. 找出字符串中第一个匹配项的下标c

28. 找出字符串中第一个匹配项的下标c

时间:2024-03-19 16:11:07浏览次数:14  
标签:index 下标 int 28 next 字符串

void bulid(int* next,char* s,int n){
    next[0]=-1;
    int index=1,j=-1;
    while(index<n){
        if(j==-1 || s[index-1] ==s[j] ){
            j++;
            next[index++]=j;
        }else{
            j=next[j];
        }
    }
}


int strStr(char* haystack, char* needle) {
    int n1=strlen(haystack),n2=strlen(needle);
    if(n1<n2) return -1;
    int head=0,index=0,tag=-1;
    int* next=(int*)malloc(sizeof(int)*n2);
    bulid(next,needle,n2);
    while(index<n2 && head<n1 ){
        if(haystack[head]==needle[index]){
            head++;
            index++;
            if(index==n2) tag=head-n2;
            printf("%d",head);
        }else{
            index=next[index];
            if(index==-1){
                index=0;
                head++;
            }
        }

    }
    return tag;
}

 

标签:index,下标,int,28,next,字符串
From: https://www.cnblogs.com/llllmz/p/18083215

相关文章

  • C语言判断回⽂字符串
    使用C语言判断这个字符串是否是回⽂字符串(字符串的长度小于等于30,字符串不包含空格),如果是回文字符串输出Yes,如果不是回⽂字符串输出No。回文串:是一个正读和反读都一样的字符串方法:1.使用两个指针分别放置在字符串的头和尾,进行比较,如果相同,则头++,尾–.不同则结束判断......
  • LY1169 [ 20230328 CQYC省选模拟赛 T1 ] 传奇特级超空间
    题意设\(f_{n,m}\)表示\(m\)维空间能被\(n\)个\(m-1\)维空间划分的最大区域数。求\(\sum_{i=0}^mf_{n,i}\)\(n,m\le10^{18},p\le2\times10^7\)Sol注意到:\(f_{n,m}=f_{n-1,m-1}+f_{n-1,m}\)。不难想到\(f\)应该是组合数的前缀......
  • java判断拼音字符串是不是汉字全拼
    publicstaticvoidmain(String[]args){Stringstr="wange";Stringstr1="huanggong";Stringstr2="wang文胜";Stringstr3="heihiyijiaren";Stringstr4="huangt......
  • 字符串增加千分位 负号提前处理
    *千分位DATA:LV_STRTYPESTRING,LV_CURRCTYPESTRING,LV_TMP1TYPESTRING,LV_TMP2TYPESTRING,LV_LENTYPEI,LV_LEN1TYPEI,LV_LEN2TYPEI,LV_LEN3TYPEI,LV_LEN4TYPEI.DATA:LV_CURRTYPEBAPICURR-BA......
  • 字符串的处理
    目录1、str.lower()2、str.upper()3、str.split(sep=None)4、str.count()5、str.find()6、str.index()7、str.startwith()、str.endswith()8、str.replace(old,news)9、str.center(width,fillchar)首先,字符串在python中是一个不可变的数据类型;其次,字符串包含了许多......
  • BCD转字符串
    //////BCD转字符串/////////偏移量///数字字符串位数//////publicstaticstringBCDToString(byte[]bcdNum,intoffset,intnumlen){stringretString="";intres;varlen=Math.DivRem(numlen,2,outres);if(res!=0){len++;}for(i......
  • C#在不区分大小写的情况下比较字符串是否相等
    string.Equals(varData_QCMH04.ST_NO.Trim(),tempSteelType,StringComparison.OrdinalIgnoreCase)publicvoidGetRemoteStandardToLocal(){try{//MyRegion读取数据库获取原始数据usingIDbConnectiondbConnection=newOracleConnection(st......
  • 字符串压缩(C++)
    字符串压缩:    例如:aaaabbbccx-->4a3b2cx,单个字符不压缩。基本思想:前后两两字符作比较,若相同则计数器加一,若不同则直接输出。程序代码:#include<iostream>intmain(){ strings; intcount=1; cin>>s; s=s+"";//加上空格是为了方便最后一个字符的比较 in......
  • 【字符串匹配】BF与KMP算法
    一、字符串匹配问题字符串匹配问题是指在一个主文本字符串中查找一个指定的模式字符串,并确定模式字符串在主文本中出现的位置。这个问题在计算机科学中非常常见,尤其是在文本处理、数据搜索和生物信息学等领域。字符串匹配问题通常涉及到以下几个方面:模式识别:识别主文本中是......
  • 【SQL Server】超详细SQLServer日期转换、字符串、数学、聚合等常用函数大全(最新版)
    文章目录一、字符串函数1、获取uuid2、字符串截取3、字符串拼接4、字符串去空格5、大小写转换6、格式化数字为字符串7、字符串替换、转换8、查找与定位9、ISNULL判空取值二、日期时间函数1、获取当前日期和时间2、提取日期部分3、DATENAME(datepart,date_expr)函数,返......