随手练——拼接最小字典序

没有找到OJ题目。

第一眼想到的一般都是按字典序从头到尾依次。

b,ba按这个思想排出来,是bba,但其实最小的是bab,就要改一下比较策略了,改成拼接之后,比较谁小。

int cmp(string s1,string s2) {
    return s1 + s2 < s2 + s1 ?  1 : 0;
}

完成代码:

#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;

int cmp(string s1,string s2) {
    return s1 + s2 < s2 + s1 ?  1 : 0;
}
int main() {
    vector<string>v;
    string s;
    while (getline(cin,s)) {
        if (s.empty())break;
        v.push_back(s);
    }
    sort(v.begin(), v.end(),cmp);
    for (int i = 0; i < v.size(); i++) {
        cout << v[i];
    }
}

猜你喜欢

转载自www.cnblogs.com/czc1999/p/10355969.html