zoukankan      html  css  js  c++  java
  • 【每天一道算法题】字符串查找

    华为OJ上的,昨天没做题,今天2道。 

    用数组记录之前匹配的状态。最后遍历数组就行。类似最大公共子串。

    #include <string>
    #include <iostream>
    using namespace std;
    
    int main(){
        string src;
        string des;
        cin>>src;
        cin>>des;
    
        int len1=src.length();
        int len2=des.length();
    
        int arrstr[129]={0};
        for(int i=0,j=0;i<len1&&j<len2;){
            if(src[i]==des[j]||des[j]=='?'){
                if(i==0||j==0)
                    arrstr[i]=1;
                else arrstr[i]=arrstr[i-1]+1;
                j++;
            }
            else arrstr[i]=0;
            i++;
        }
        for(int i=0;i<len1;i++){
            if(arrstr[i]==len2){
                for(int j=i-len2+1;j<=i;j++)
                    cout<<src[j];
                break;
            }
        }
        return 0;
    }
  • 相关阅读:
    洛谷 P6622
    洛谷 P6619
    LOJ 3188
    CF::Gym 102174G
    eJOI2017~2019
    洛谷 P6313
    洛谷 P6305
    JSOI2020 酱油记
    洛谷 P6234
    CodeForces 1334F
  • 原文地址:https://www.cnblogs.com/LUO77/p/5777215.html
Copyright © 2011-2022 走看看