今天做一个简单的算法题,居然用了1个小时,STL unordered_map用多了,没想到map这次派上了用场,这里记录一下:

算法题为 给一个字符串例如  abaaba,每连续两个字符组成一个子串 ab, ba, aa,ab,ba,统计出现的个数,按照个数大小排序打印,这里 ab 2次,ba两次,aa 1次,如果都是一样的次数,按照字典顺序打印,例如这里ab 和ba都是2次,那么先打印ab 然后是ba 最后 是aa;

算法:找出字串,然后用map记录这个string和它出现的个数,注意要用map不能用unordered_map,这样能保证是按照字典排序,然后再用一个稳定排序按照这个Map的key排序即可。

 #include <iostream>
 #include <string>
 #include <algorithm>
 #include <cstring>
 #include <vector>
 #include <unordered_map>
 #include <map>
 using namespace std;
 typedef pair<string, int> PAIR;
 int cmp(const PAIR &x, const PAIR &y)
 {
   return x.second > y.second;
 } 

 void p (string& s) {
     vector<string> vec;
     ;
     ; i < num; i++) {
         );
         vec.push_back(tmp);
     }
     sort (vec.begin(), vec.end());
     map <string, int> tmp;
     ]= {};
     ] = {};
     for (auto itr = vec.begin(); itr != vec.end(); itr ++) {
         string val = *itr;
         //cout << val << endl;
         ] - ] - 'a'] == true) {
         tmp[val] = tmp[val] + ;
         } else {
         tmp[val] = ;
         }
         first[val[] - 'a'] = true;
         sec[val[] - 'a'] = true;
     }
     vector <PAIR> pair_vec; //用pair来实现按照pair的第二个元素大小也就是value排序
     for (auto it = tmp.begin(); it != tmp.end(); it++) {
         pair_vec.push_back(make_pair(it->first, it->second));
     }
     stable_sort(pair_vec.begin(), pair_vec.end(), cmp);
     for (auto curr = pair_vec.begin(); curr != pair_vec.end(); ++curr) {
         cout << curr->first << endl;
     }
 }
 int main() {
     string s;
     cin >> s;
     p(s);
     ;
 };

测试代码

mississippitennessee

输出:

ss
is
si
ee
en
es
ip
it
mi
ne
nn
pi
pp
se
te

C++中Map常见用法以及按照value排序的更多相关文章

  1. python map 常见用法

    python map 常见用法2017年02月01日 19:32:41 淇怪君 阅读数:548版权声明:欢迎转载,转载请注明出处 https://blog.csdn.net/Tifficial/art ...

  2. STL map 常见用法详解

    <算法笔记>学习笔记 map 常见用法详解 map翻译为映射,也是常用的STL容器 map可以将任何基本类型(包括STL容器)映射到任何基本类型(包括STL容器) 1. map 的定义 / ...

  3. Linux中find常见用法

    Linux中find常见用法示例 ·find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \; find命令的参数 ...

  4. [转]Linux中find常见用法示例

    Linux中find常见用法示例[转]·find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;find命令的参 ...

  5. Linux中 find 常见用法示例

    Linux中find常见用法示例 #find path -option [ -print ] [ -exec -ok command ] {} \; #-print 将查找到的文件输出到标准输出 #- ...

  6. C语言 · C++中map的用法详解

    转载自:http://blog.csdn.net/sunquana/article/details/12576729 一.定义   (1) map<string,   int>   Map ...

  7. STL中map的用法

    map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候 ...

  8. C++11中map的用法

    最全的c++map的用法 1. map最基本的构造函数:map<string ,int>mapstring; map<int,string >mapint;map<sri ...

  9. [转]Java中Map的用法详解

    转载地址:http://www.zhixing123.cn/jsp/30113.html Map简介 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值.此接口取代 Dictio ...

随机推荐

  1. Coding the Matrix作业Python Lab及提交方法

    Coding the Matrix: Linear Algebra through Computer Science Applications 这是一门用python实现矩阵运算的课,第一次作业就感觉 ...

  2. head first--------------------template method pattern

    head first---------模板方法模式         浅谈谈模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以在不改变算法结构的情况下,重新定义 ...

  3. [置顶] Nosql笔记(一)——关系型数据库回顾

    Nosql笔记(一)——关系型数据库回顾 在平常的商业应用中,我们所使用的大多都是关系型数据库,诸如SQL  Server. MY SQL. Oracle等. 关于关系型数据库中的关键技术: 存储引擎 ...

  4. ASM上的备份集如何转移到文件系统中

    刚看到一个有关asm备份集的迁移的问题.特地整理了一下 方法有两个. 方法一:使用rman,rman是一个非常好的工具,不仅仅是备份的作用,如果你只用rman作备份的话,有些浪费了. 通过rman里的 ...

  5. 横瓜执导众程序员开展大讨论关于C、JAVA及其它主流IT技术使用情况和优点缺点。

    横瓜执导众程序员开展大讨论关于C.JAVA及其它主流IT技术使用情况和优点缺点. 遥执乾坤(44758121)  18:21:23 mysql据说只能使用一个索引,我这里几乎所有字段都有索引. 但每个 ...

  6. Linux实战教学笔记10:正则表达式

    第十节 正则表达式 标签(空格分隔):Linux实战教学笔记 ---更多资料点我查看 第1章 什么是正则表达式 正则表达式就是为了处理大量的文本|字符串而定义的一套规则和方法 通过定义的这些特殊符号的 ...

  7. SublimeText快捷键

    在我做了一次包含一些现场编码的演示后,一些观众问我是如何操作这么快.当然这里没有唯一的答案,答案是一堆简单的快捷键和大量的实践的组合.为了回应那些询问,我觉得有必要看看我每天想都不用想且使用的快捷键. ...

  8. html5的navigator调用手机震动

    navigator.vibrate(s) 或 navigator.webkitVibrate(s),不过该属性只在安卓系统有效.

  9. pyhon的数据类型

    1.数字 整型和浮点型 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647在64位系统上,整数的位数为64位,取值范围为-2** ...

  10. Let's DO IT !

    今天开始逐步自学计算机图形学. 慢慢成长.