zoukankan      html  css  js  c++  java
  • 输入n个数字符串(单词、数字字符),找出出现次数少于 n/3 的字符串

    大概思路:

    一个map<string,int>存储输入的字符内容以及输入的次数,对次数进行判断,输出少于指定次数的字符串:

    #include<iostream>
    #include<map>
    #include<string>
    
    using namespace  std;
    
    int main()
    {
        int n;
        int s=0;
        map<string, int> mp;
        cin >> n;
        string str="";
        map<string, int>::iterator it;
        cin.ignore();    //特别注意这里,使用for循环+getline实现多行输入字符串,要加这句来干掉滞留在输入流中的换行符
        for (int i = 0; i<n; i++)
        {
            getline(cin, str);
            it = mp.find(str);
            if (it == mp.end())     //判断字符串石否之前出现过
            {
            mp[str] = 1;      //第一次出现就把次数设为1
            s += 1;
            }
            else
            it->second+=1;      //不是第一次出现就把次数加 1
            str = "";
            
            
        }
        it = mp.begin();
        cout << "len:  " << s << endl;
        cout << "mp.size: " << mp.size()<<endl;
        while (it != mp.end())
        {
            if((it->second)<(s / 3.0))
            {
                cout << it->first << " " << it->second << endl;
                
            }
            it++;
    
    
        }
    
    
        
    }

    测试:第一行输入待输入字符串的个数n,后面n行输入每次输入的字符串,输出次数少于n/3的字符串及其次数

  • 相关阅读:
    VS2010 添加项目依赖
    人工鱼群算法 AFSA
    粒子群算法 PSO
    CUDA速度测试
    AGSO 萤火虫算法
    用于WTL工具栏的辅助类CToolBarHelper
    关于结构体内存对齐
    遗传算法 GA
    A*算法
    人工蜂群算法 ABC
  • 原文地址:https://www.cnblogs.com/victorywr/p/13474116.html
Copyright © 2011-2022 走看看