1. 程式人生 > >C++統計單詞個數及排序:容器按照value排序

C++統計單詞個數及排序:容器按照value排序

例:

給定一段英語文字,要求對其中單詞出現的個數按照從小到大進行排序,出現次數相同的按照首字母順序排列。

演算法實現:

#include <iostream>
#include <algorithm>
#include <vector>
#include <unordered_map>
#include <map>
#include <fstream>

using namespace std;
typedef pair<string, int> PAIR;

int cmp(const PAIR &x, const
PAIR &y) { return x.second < y.second; } int main() { string file; cout << "Enter the text path:"; cin >> file; ifstream inout; inout.open(file, ios::in); if (inout.fail()) { cout << "Your file don't exist!" << endl; return
0; } vector<string> key; map<string, int> map; string skey; int flag = 0; inout >> skey; key.push_back(skey); map[skey] = 1; while (!inout.eof()) { inout >> skey; for (int i = 0; i < key.size(); ++i) { if (key[i] == skey) { flag = 1
; } } if (flag == 1) { map[skey]++; } else { key.push_back(skey); map[skey] = 1; } } inout.close(); vector<PAIR> pair_vec; //用pair來實現按照pair的第二個元素大小也就是value排序 for (auto it = map.begin(); it != map.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 << " " << curr->second << endl; } return 0; }

測試用例:

Everybody knows the famous and handsome football player David Beckham, who has a happy family. For a long time, this man’s wife was known to people as David’s beautiful wife, while the fact is that Victoria works so hard for her fashion circle and she makes it. Now everyone treats her as the fashion designer.

結果:

相關推薦

C++統計單詞個數排序容器按照value排序

例: 給定一段英語文字,要求對其中單詞出現的個數按照從小到大進行排序,出現次數相同的按照首字母順序排列。 演算法實現: #include <iostream> #include <algorithm> #include <

C語言練習題每練 1字串統計單詞個數單詞由空格隔開

空格隔開,所以空格是一個標誌性的符號,可以通過空格來統計單詞的個數。首先,分析一下所能遇到的各種情況。相鄰兩個字元組合情況為:空空;空字:字空;字字。特殊情況考慮有全空,全字,空空空字空空空。 因為要兼顧前後所以需要兩個變數來指示,p指示前一個初始為0,C指示

大日誌檔案中如何統計單詞個數map按value排序lambda表示式版

package com.nys.countwords; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Collections;

hadoop 單詞個數所處檔案位置統計

一、題目描述         輸入若干個檔案,得到所有檔案中某單詞的所在檔名,單詞在文件中出現的次數和具體的位置資訊 例如,輸入檔案如下: 1.txt: it iswhat it is what isit it is abanana 2.txt: i is whathe i

C 單詞首字母大寫&統計單詞個數

#include <string.h> #include <stdio.h> int main(int argc, const char * argv[]){ /* * 單詞首字母大寫&統計單詞個數 */ //定義變數 char

【基礎水題】統計單詞個數

int pan 一個 else art 個數 print urn 是不是 1 //1.統計單詞的個數 2 #include <stdio.h> 3 int main(void) 4 { 5 int i, flag = 0, number =

P1026 統計單詞個數

word 截斷 area for name center 方程 拆分 決策 P1026 統計單詞個數 題目描述 給出一個長度不超過200的由小寫英文字母組成的字母串(約定;該字串以每行20個字母的方式輸入,且保證每行一定為20個)。要求將此字母串分成k份(1<k<

統計單詞個數(NOIP 2001提高組)

sample 字符串 重疊 -s pre rom 長度 最大的 解析 題目描述 Description 給出一個長度不超過200的由小寫英文字母組成的字母串(約定;該字串以每行20個字母的方式輸入,且保證每行一定為20個)。要求將此字母串分成k份(1<k<=

統計單詞個數

題目描述 給出一個長度不超過200的由小寫英文字母組成的字母串(約定;該字串以每行20個字母的方式輸入,且保證每行一定為20個)。要求將此字母串分成k份(1<k≤40), 且每份中包含的單詞個數加起來總數最大(每份中包含的單詞可以部分重疊。當選用一個單詞之後,其第一個字母不能再用。例如字串this中

從零開始寫一個Spark Structured Streaming程式來統計單詞個數

本文將從零開始寫一個Spark Structured Streaming程式來統計單詞的個數。單詞的來源是socket,讀者也可以換成kafka,計算的結果輸出到控制檯,讀者也可以改成輸出到kafka的某個topic。 準備環境: JDK和Scala安裝,並配置好環境變數JAVA_H

luogu1026_統計單詞個數_區間dp

題意 https://www.luogu.org/problemnew/show/P1026 solution 設f[i][j]表示1~i分成j分,最多的單詞數 預處理一個sum[i][j]陣列,表示i~j包含的單詞數 預處理的時候需要注意一個順序j從大到小

C++內建函式——sort 函式實現陣列的排序功能

使用該函式,只需引用標頭檔案: #include<algoritnm> 語法描述為:  // 引數begin,end 表示一個範圍,分別為待排序陣列的首地址和尾地址 // 排列的陣列中包括左邊的 begin 但不包括右邊的 end

Java程式設計,統計單詞個數

題目 統計一篇文件資料中單詞的個數(提示文件資料可放在字串中,利用正則表示式來實現) import java.util.Scanner; public class DemoTest{ String regex="[\\d\\s\\p{Punct}]+";//用正則表示式來作為分割標記

Hadoop-MapReduce初步應用-統計單詞個數

參考官網的單詞統計,上傳文字檔案讀取資料,統計等, 首先準備好文字檔案,隨便寫點單詞,再看統計結果正確與否。註釋都 寫在程式碼裡了,希望能幫到入門的開發人員 專案結構如下,讀出的資料一起發出來了 package hadoop.com.test; import

【題解】洛谷P1026[NOIP2001]統計單詞個數 區間DP+字串

題目連結 參考了大佬題解中string的基操 #include<cstdio> #include<iostream> using namespace std; string str,ch,word[10]; int p,k,s,su

2015藍橋杯校選-統計單詞個數

題目:輸入一個字串,求它包含多少個單詞。單詞間以一個或者多個空格分開。 第一個單詞前,最後一個單詞後也可能有0到多個空格。 比如:" abc    xyz" 包含兩個單詞,"ab   c   xyz

IO應用——讀取文字檔案並統計單詞個數

讀取一共文字檔案,統計出其中每一個單詞出現的次數,並把結果儲存在另外的一個檔案中 此處我的文字內容是:i love you,i love you 我就沒有儲存到另一個檔案了,要儲存直接用輸出流就行了 public static void main(String[] args) thr

【NOIP2001提高組T3】統計單詞個數-字串上的動態規劃

(本人本題完成於2016-7-19) 題目大意:給定一個字串(長度為20*p,不超過200)和一個包含一些單詞(個數為n,1≤n≤6)的詞典,問如何將該字串分成K(不超過40)份,使得每份中包含的單詞

Vijos1118 統計單詞個數

題目大意:給定一個長度20*p的字串以及一個字典,求將該字串分成k份後最多能包含多少個字典中的單詞(某個字母不能同時作為多個單詞的開頭)。 思路:劃分型DP。先預處理出在各個區間中包含的單詞數,這裡可以只記錄最短單詞的長度,因為一個字母只能提供一個開頭。接下來

C++ map容器 按照value排序

正常的map預設按照key值排序,而map又沒有像vector一樣的sort()函式,那麼如果將map按照value值排序呢,方法如下 方法. 將map中的key和value分別存放在一個pair