【字符串处理+字典序排序】HDU-1113 Word Amalgamation
程序员文章站
2022-06-29 08:58:37
...
注解
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;
}