1. 程式人生 > >1071 Speech Patterns

1071 Speech Patterns

小寫字母 tag pan substr dig div 編碼 是否 利用

題意:給出一個字符串,找出詞頻最高的單詞和相應的詞頻。(這個就是我之前做的一個項目的一個函數啊,哈哈哈)

思路:利用map定義字典map<string,int> dict。主要是字符串的截取,這裏用上了幾個比較方便的函數,總結如下:

幾個有助於節省編碼時間的字符串處理函數(在頭文件<ctype.h>或<cctype>下)

  • isalnum 判斷字符是否為字母(含大小寫)或數字
  • isalpha 判斷字符是否為字母(含大小寫)
  • islower 判斷字符是否為小寫字母
  • isupper 判斷字符是否為大寫字母
  • isdigit 判斷字符是否為數字
  • tolower 把大寫字母轉換成小寫字母
  • toupper 把小寫字母轉換成大寫字母

代碼:

#include <iostream>
#include <cctype>//isalnum(),tolower()
#include <string>
#include <map>
#include <fstream>
using namespace std;
int main()
{
    //ifstream cin("pat.txt");
    string str;
    getline(cin,str);
    int len=str.size();
    for
(int i=0;i<len;i++) str[i]=tolower(str[i]); map<string,int> dict;//定義字典 int low=0; while(low<len){ int i=low; while(i<len && isalnum(str[i])) i++; if(i>low){ string word=str.substr(low,i-low); // if(dict.find(word)==dict.end())//這幾句寫不寫都沒關系
// dict.insert(make_pair(word,1)); // else dict[word]++; } low=i+1; } string ans; int maxFreq=0; for(auto it:dict){ if(it.second>maxFreq){ ans=it.first; maxFreq=it.second; } } cout<<ans<< <<maxFreq; return 0; }

1071 Speech Patterns