【出现次数最多的单词】

字典树==

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <string>
 5 #define mem0(a) memset(a, 0, sizeof(a))
 6 using namespace std;
 7 char str[200000];
 8 struct Trie {
 9         int ch[200000][30];
10         int val[200000];
11         int last[200000];
12         char cha[200000];
13         int sz;
14         Trie() {
15                 sz = 1;
16                 mem0(ch[0]);
17         }
18         int idx(char c) {
19                 return c - ‘a‘;
20         }
21         void insert(char s[]) {
22                 int u = 0, n = strlen(s);
23                 for(int i = 0; i < n; i++) {
24                         int c = idx(s[i]);
25                         if(!ch[u][c]) {
26                                 mem0(ch[sz]);
27                                 val[sz] = 0;
28                                 last[sz] = u;
29                                 cha[sz] = c;
30                                 ch[u][c] = sz++;
31                         }
32                         u = ch[u][c];
33                 }
34                 val[u]++;
35         }
36         void outp(int nn) {
37                 if(nn == 0) return;
38                 outp(last[nn]);
39                 putchar(cha[nn] + ‘a‘);
40         }
41         int solve() {
42                 int ans = 0, mark = 0;
43                 for(int i = 0; i < sz; i++) {
44                         if(val[i] > ans) {
45                                 ans = val[i];
46                                 mark = i;
47                         }
48                 }
49                 outp(mark);
50                 cout<< endl<< ans<< endl;
51         }
52 };
53 Trie S;
54 int main()
55 {
56         //输入很多用空格隔开的单词(只包含小写字母)
57         //输出出现次数最多的单词以及出现的次数
58         while(~scanf("%s", str)) S.insert(str);
59         S.solve();
60         return 0;
61 }

时间: 2024-10-19 18:15:52

【出现次数最多的单词】的相关文章

统计英文文本文件出现次数最多的单词

源代码: package 统计英文文本文件出现次数最多的单词;import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.io.IOException;import java.util.Map;import java.util.Scanner;import java.util.TreeMap;class zimu{ String name; int num; zimu(){ nam

java语言 找出文章中出现次数最多的单词

package english; import java.io.File; import java.util.Scanner; import java.io.FileNotFoundException; import java.util.HashMap; import java.util.Iterator; import java.util.Set; public class Words { public static <type> void main (String[] args) thro

用java实现输出英文小说飘中出现次数最多的前N个单词(附:使用文件读写)

本文参考于:https://blog.csdn.net/u014204432/article/details/40348839 一.题目 输出单个文件(<飘> 英文版)中的前 N 个最常出现的英语单词,并将结果输入到文本文件中. 二.程序设计思路 1.首先将英文小说飘文件内容用文件读写方式读入StringBuffer中,然后一行一行读取并去掉句子和单词 间空格然后将StringBuffer转换成String,然后再将所有字符转化成小写字符,然后再将句子分割成单词并 存入字符数组. 2.随后遍历

找出n个字符串中出现次数最多的字符串。

1. 找出n个字符串中出现次数最多的字符串. C/C++: char* find(char **data,int n); Java: String find(String data[]); 说明: 1. data是字符串数组,n是数组中字符串的个数,返回值为出现次数最多的字符串. 2. 若结果有多个,返回任意一个即可 3. 不得使用任何库函数/API,如需使用类似功能, 请自行实现 4. 算法效率尽可能高,尽量少的使用内存空间 5. 必须要有代码注释和算法说明. 例如:data里面的数据是{“p

获取字符串中出现次数最多的字符

var stringUtil = {}; stringUtil.getMaxLengthCharacter = function(s){ var info = {}, getObj, getMaxLength; //把字符和出现次数存放在对象中 getObj = (function(s){ var obj = {}; for(var i = 0, j = s.length; i < j; i++){ if(obj[s[i]]){ obj[s[i]] += 1; }else{ obj[s[i]]

LA 4670 出现次数最多的子串 (AC自动机模板题)

Dominating Patterns Time Limit:3000MS   Memory Limit:Unknown   64bit IO Format:%lld & %llu [Submit]  [Go Back]  [Status] Description The archaeologists are going to decipher a very mysterious ``language". Now, they know many language patterns; ea

算法积累(字符串转换驼峰,判断一个字符串中那个字母出现次数最多,并且出现了几次)

因为算法比较烂,所以想做一下这方面的积累. 尽量能够每天学习一个新算法吧.(不过估计很悬) 好吧,今天第一个是字符串转换驼峰 直接上代码 var str = 'toupper-case'; var arr = str.split('-'); //toupper,case for (var i = 1; i < arr.length; i++) { //把除了第一个数组后面的数组的第一个值设置为大写然后大写字母和去掉第一个字符的剩下的字符进行拼合 arr[i] = arr[i].charAt(0)

求一个字符串中连续出现次数最多的子串

解题思路 例如字符串"abababc",最多连续出现的为ab,连续出现三次.要和求一个字符串中的最长重复子串区分开来,还是上面的字符串,那么最长的重复子串为abab.两个题目的解法有些类似,都用到了后缀数组这个数据结构.求一个字符串中连续出现的次数最多的子串,首先生成后缀数组例如上面的字符串为: abababc bababc ababc babc abc bc c 可以看出第一个后缀数组和第三个后缀数组的起始都为ab,第5个后缀数组也为ab.可以看出规律来,一个字符串s,如果第一次出现

出现次数最多的整数

1 #include<stdio.h> 2 3 int main() 4 { 5 int i,j; 6 int n; //用于记录要输入的整数的个数 7 int a[20]; //用于存储输入的n个整数 8 int max_num_int; //用于记录出现次数最多的整数 9 int max_num; //用于记录 max_num_int 的出现次数 10 11 //输入 12 scanf("%d",&n); //要输入的整数的个数 13 14 if(n>0&