今天在做之前的题,有一道题网上的一种做法,让我惊了,不是怎么怎么复杂而是感觉脑回路很惊奇,很牛逼,看代码。
题意是输入一组英文单词,按字典顺序输出(大写与小写字母具有相同大小写),排序输出。
例如:输入:Information Info Inform info Suite suite suit 输出:Info info Inform Information suit Suite suite
//因为按照正常的来说,输出的是Info Inform Information Suite info suit suite
//所以我们可以把大写转换为小写,写一个结构体,两个字符串,一个放需要排序的,一个放转换为小写的,排序按照小写的排,输出输出大写。
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
struct node
{
string a,b;
};
bool cmp(node x,node y)
{
return x.a<y.a;
}
node ns[100];
int main()
{
string tt;
int i,n=0;
while(cin>>tt)
{
ns[n++].a=tt;
}
for(i=0; i<n; i++)
{
ns[i].b=ns[i].a;
for(int j=0; j<ns[i].a.length(); j++)
{
if(ns[i].a[j]>='A'&&ns[i].a[j]<='Z')
ns[i].a[j]+='a'-'A';
}
}
sort(ns,ns+n,cmp);
for(i=0; i<n; i++)
cout<<ns[i].b<<" ";
cout<<endl;
for(i=0; i<n; i++)
cout<<ns[i].a<<" ";
cout<<endl;
return 0;
}
牛逼plus。