算法排序功能不适用于C ++

时间:2014-11-09 17:33:20

标签: c++ algorithm sorting permutation

我正在做一个函数来比较两个字符串向量是否是彼此的排列。我正在尝试下一个应该工作的代码,但由于某种原因,来自C ++的算法库的sort函数不起作用。

bool esPermutacion(vector <string>  s1, vector <string>  s2){

 if (s1.size() == s2.size()){
     sort(s1.begin(), s1.end());
     sort(s2.begin(), s2.end());

    return s1 == s2;
 }

 return false;
}

int main(){

    vector <string> s1;
    string s = "";
    vector <string> s2;
    cin >> s;
    s1.push_back(s);

    cin >> s;
    s2.push_back(s);
    cout << esPermutacion(s1, s2) << endl;


    return 0;
}

Results on my computer

任何帮助都将不胜感激。

编辑:

如果我试试这个:

bool esPermutacion(vector <string>  s1, vector <string>  s2){

    if (s1.size() == s2.size()){
        sort(s1.begin(), s1.end());
        sort(s2.begin(), s2.end());

        for (int i = 0; i < s1.size(); i++){
            cout << s1[i];
        }
        cout << endl;
        for (int i = 0; i < s2.size(); i++){
            cout << s2[i];
        }
        cout << endl;


        return s1 == s2;
    }

    return false;
}

我可以看到排序功能不起作用

答案:

bool esPermutacion(string  s1,string s2){

    if (s1.size() == s2.size()){
        sort(s1.begin(), s1.end());
        sort(s2.begin(), s2.end());
        return s1 == s2;
    }

    return false;
}
int main(){

    string s1 = "";
    string s2 = "";
    cin >> s1;
    cin >> s2;
    cout << esPermutacion(s1, s2) << endl;

    return 0;
}

现在正在运作。谢谢大家!

1 个答案:

答案 0 :(得分:3)

  

我正在做一个函数来比较两个字符串向量是否是彼此的排列

你确实这样做了,而且它运作正常。

但是你的示例输入很明显你实际上想要别的东西:你实际上想要比较如果两个字符串是彼此的排列,而不是两个字符串的矢量

问题在于:不在代码中,而是在规范中。