刚才在群里看别人发了一个题目
作者:互联网
这是一道排序+字符串处理的题目,难度属于PAT乙级,五题中的第三题。
分析:字典序就是字符串在字典中的顺序。例如,
1。“A”的字典序小于“a”;
2。"a"的字典序小于”b“;
3。”aa“的字典序小于”aaaa“
4。"aaaa"的字典序小于”aab“的字典序,这里从最高位,一个字符一个字符的比较。
5。“Aa”的字典序小于"aa"
#include<iostream> #include<algorithm> using namespace std; bool cmp(string a,string b) { //计算单词ASCII值,并转小写单词 int sum1 = 0,sum2 = 0; for(int i = 0 ; i < a.size(); ++i) { sum1 += a[i]; a[i] = tolower(a[i]); } for(int i = 0 ; i < b.size(); ++i) { sum2 += b[i]; b[i] = tolower(b[i]); } if(a != b) return a < b;//比较小写单词 else return sum1 < sum2;//单词一样,就比较ASCII和 } int main() { int n; string str[100]; cin>>n; for(int i = 0; i < n; ++i)//输入n个 单词 cin>>str[i]; sort(str,str+n,cmp);//根据转换成小写单词后的字典序,原单词的ASCII码,对单词排序 for(int i = 0; i < n;++i){ if(i > 0) printf(" "); cout<<str[i]; } return 0; }
标签:群里,题目,int,sum2,单词,++,str,发了,字典 来源: https://www.cnblogs.com/keep23456/p/12356278.html