输入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的字符串及其次数

原文地址:https://www.cnblogs.com/victorywr/p/13474116.html