请教一道算法题

第五题 判断是否字符串一样 里面有两个特殊字符* 和?, 例如用 ma?k 匹配 mark 就输出yes (?表示可以表示任意一个字母), ma* 匹配 mark 也输出yes(*表示可以表示多于一个字符)

阅读 2.2k
2 个回答
int main()
{
    string text1="";
    while(cin>>text1)
    {
        string text2="";
        cin>>text2;
        
        bool match = true;
        for(int i =0; i < text1.size(); ++i)
        {
            if(text1[i] == '*' || text1[i] == '?')
                continue;
            else if(text1[i] != text2[i])
            {
                match = false;
                break;
            }
        }
        
        cout<< ((match==true)?"yes":"no")<<endl;
    }
    system("pause");
    return 0;
}

不懂是不是这样,希望可以帮助到你。
我用while循环来连续输入字符串,因为我懒得每输入一次结束程序后又得开启程序多一次。

新手上路,请多包涵

这是要实现正则表达式的部分匹配功能。如果只是要代码可以搜索下相关提供的函数。
自己实现的话可以用递归,一个指向目标串,一个指向匹配串,依次同时加1,或单向加1,一直到失败或匹配完成为止。有点类似kmp或者a*的方式吧。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题