猜字谜,去重,排序后在两层for循环进行对比。逻辑很简单,代码量长。

#include
using namespace std;
vector split(char de)
{
    string s;
    getline(cin,s);
    stringstream ss(s);
    vector res;
    string token;
    while(getline(ss,token,de))
    {
        res.emplace_back(token);
    }
    return res;
}
string quchong(string a)
{
    string ss;
    set res;
    for(char m:a)
    {
        if(res.find(m)==res.end())
        {
            ss+=m;
            res.insert(m);
        }
    }
   return ss;
}
string paixu(string a)
{
    vector temp;
    for(char el:a)
    {
        temp.emplace_back(el);
    }
    sort(temp.begin(),temp.end());
    string res;
    for(char s:temp)
    {
        res+=s;
    }
    return res;

}
int main()
{
     vector issues=split(',');
     vector answers=split(',');
     vector direct_answers;
     vector ordered_answers;
    for(string answer:answers)
       {
           direct_answers.emplace_back(quchong(answer));//去重
           ordered_answers.emplace_back(paixu(answer));//排序
       }
     vector direct_issues;
     vector ordered_issues;
    for(string issue:issues)
       {
           direct_issues.emplace_back(quchong(issue));//去重
           ordered_issues.emplace_back(paixu(issue));//排序
       }
       vector res;
    for(int i=0;i     {
        bool notfound=true;
        string distint_issue=direct_issues[i];
        string ordered_issue=ordered_issues[i];
        for(int j=0;j         {
             string distint_answer=direct_answers[j];
             string order_answer=ordered_answers[j];
            if(distint_answer==distint_issue||order_answer==ordered_issue)
            {
                res.emplace_back(answers[j]);
                notfound=false;
            }
        }
        if(notfound)
        {
                res.emplace_back("not found");
        }
    }
    for(int i=0;i     {
        cout<         if(i         {
            cout<<",";
        }
    }
    return 0;
}

你可能感兴趣的:(c++,算法,开发语言)