• 含通配符的字符串匹配问题


    题目:
    给定两个字符串,求字符串2。在字符串1中的最先匹配结果。字符串2中 能够存在’*’符号,且该符号能够代表随意字符,即字符串2中存在通配符。
    比如:输入:abcdefghabef,a*f 输出:abcdef

    #include<iostream>
    #include<string>
    using namespace std;
    
    int main()
    {
        int i=0,len=0,len1,len2,j=0,begin=0;
        string s,s1,s2,s3;
        getline(cin,s);
        len = s.size();
        ///////////////////////////////
        for(i=0;i<len;i++)
        {
            if(s[i]!=',')
            {
                s2+=s[i];
            }
            else
            {
                s1 = s2;
                s2.clear();
            }
        }
        /////開始匹配/////////////////////
        len1 = s1.size();
        len2 = s2.size();
    
        if(s2 == "*")
        {
            cout<<s1;
            return 0;
        }
        for(i=0;i<len1;i++)
        {
            while((s2[j]=='*')||(s1[i]==s2[j]))
            {
                if(s2[j]=='*')
                {
                    if(j+1==len)
                    {
                        s3.assign(s1,begin,len1-begin);
                        cout<<s3;
                        return 0;
                    }
                    while(s1[i]!=s2[j+1])
                    {
                        i++;
                        if(i==len1) 
                        {
                            cout<<"失败";
                            return 0;
                        }
                    }
                    j++;
                }
                else if(s1[i]==s2[j])
                {
                    while(s1[i]==s2[j])
                    {
                        i++;
                        j++;
                        if(j==len2)
                        {
                            s3.assign(s1,begin,i-begin);
                            cout<<s3;
                            return 0;
                        }
                    }
                }
            }
            j=0;
            begin = i;
        }
        return 0;
    }
  • 相关阅读:
    rpm常见命令使用说明
    终端传值给Makefile、Makefile传值给C++代码
    redis实现异步队列
    redis实现分布式锁
    正则表达式
    nginx安装
    metaq
    zeromq
    ActiveMq
    http压力测试
  • 原文地址:https://www.cnblogs.com/mthoutai/p/7272033.html
Copyright © 2020-2023  润新知