鍍金池/ 問答/人工智能  C  C++/ 請教一道算法題

請教一道算法題

第五題 判斷是否字符串一樣 里面有兩個特殊字符* 和?, 例如用 ma?k 匹配 mark 就輸出yes (?表示可以表示任意一個字母), ma* 匹配 mark 也輸出yes(*表示可以表示多于一個字符)

回答
編輯回答
憶往昔

這是要實現(xiàn)正則表達式的部分匹配功能。如果只是要代碼可以搜索下相關(guān)提供的函數(shù)。
自己實現(xiàn)的話可以用遞歸,一個指向目標(biāo)串,一個指向匹配串,依次同時加1,或單向加1,一直到失敗或匹配完成為止。有點類似kmp或者a*的方式吧。

2017年6月22日 15:18
編輯回答
哎呦喂
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循環(huán)來連續(xù)輸入字符串,因為我懶得每輸入一次結(jié)束程序后又得開啟程序多一次。

2018年3月17日 19:07