欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【字符串处理+字典序排序】HDU-1113 Word Amalgamation

程序员文章站 2022-06-29 08:58:37
...

【字符串处理+字典序排序】HDU-1113 Word Amalgamation
【字符串处理+字典序排序】HDU-1113 Word Amalgamation

注解

1、设置两个vector,一个存放原先字符串(并按字典序对整个字典排序),另一个存放按字典序排序后的对应的字符串。
2、输出时,先对要输出的字符串的字符按字典序排序,然后与按字符排序后的字典一一比较,若相同,则输出该排序后的字典对应的原始字符串。
3、注意对char数组排序和对string数组排序的区别,对char[]排序指的是对某个字符串的字符,按字典序排序。而对string[]排序指的是对所有字符串组成的数组按字典序排序。

代码

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

string stringSort(string tmp) {
    char c[7] = "";
    for(int j=0; j<tmp.length(); j++) {
        c[j] = tmp.at(j);
    }
    sort(c, c+tmp.length());
    string s;
    for(int i=0; i<tmp.length(); i++) {
        s += c[i];
    }
    return s;
}

int main() {

    vector<string> v;
    vector<string> vSort;
    string s;
    cin>>s;
    while(s.compare("XXXXXX")) {
        v.push_back(s);
        cin>>s;
    }
    sort(v.begin(), v.end());

    for(int i=0; i<v.size(); i++) {
        vSort.push_back(stringSort(v.at(i)));
    }

    cin>>s;
    while(s.compare("XXXXXX")) {
        int flag = 0;
        for(int i=0; i<vSort.size(); i++) {
            if(vSort.at(i).compare(stringSort(s))==0) {
                flag = 1;
                cout<<v.at(i)<<endl;
            }
        }
        if(!flag) {
            cout<<"NOT A VALID WORD"<<endl;
        }
        cout<<"******"<<endl;
        cin>>s;
    }

    return 0;
}

结果

【字符串处理+字典序排序】HDU-1113 Word Amalgamation