用map映射来对字符串进行排序

字符串排序

http://www.nowcoder.com/questionTerminal/dfeed0e0e4624814b122265e859783b2

map映射底层是用红黑树来实现的,可以使映射有序,所以此题就可以使用map,将字符串逐个添加至映射中,最后按序输出即可,即省去了对字符串进行存储,也省去了排序的步骤
#include <cstdio>
#include <iostream>
#include <string>
#include <map>

using namespace std;

int main()
{
	int n;
	while(scanf("%d", &n) != EOF)
	{
		getchar();//吸收换行符
		map<int, string> mymap;//定义map映射
		int i = 0;
		for(i; i < n; i++)
		{
			string str;
			getline(cin, str);
			if(str == "stop")
				break;
			int m = str.size() ;
			mymap[m] = str;
            //因为本题要求按字符串长度排序,map映射是有序的,只要将字符串长度设为first, 字符串本身设为second,就可以在map映射中按字符串长度进行排序
		}
		map<int, string>::iterator it;
        /*按顺序输出映射中的second即可*/
		for(it = mymap.begin(); it != mymap.end() ; it++)
		{
			cout <<it->second<<endl;
		}
	}
	return 0;
}



全部评论

相关推荐

09-30 11:52
门头沟学院 Java
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务