数据结构与算法-串

17 阅读1分钟

导图

52292e001863d481f8337e94091c1876.png

一、顺序串

1、定义

typedef struct{
    char ch[M+1];//约定0不用
    int length;//串长
}SString;
  • 判断两个串是否相等
boo Equal(String S,String T){
    if(S.length!=T.String)  return false;
    for(int i=1;i<=S.length;i++){
    if(S.ch[i]!=T.ch[i]){
        return false;
    }
    }
    return true;
}
  • 串的模式匹配

在一个 “主串”(很长的字符串)里,查找是否存在一个 “模式串”(我们要找的子串),如果存在,返回它在主串中首次出现的位置

  1. BF(Brute Force 暴力)算法(简单模式匹配)
int index_BF(SString S,SString T,int pos){//pos为在主串开始匹配目标串的位置
    int i=pos,j=1;
    while(i<=S.length&&j<=T.length){
        if(S.ch[i]==T.ch[j]){
        i++;
        j++;
        }else{
        i=i-j+2;
        j=1;
        } 
    }
    if(j>T.length){
        return i-T.length;
    }else{
        return  0;
    }
    
}

image.png

课程www.bilibili.com/video/BV1m6…