计算字符串中每种字符出现的次数

计算字符串中每种字符出现的次数
计算字符串中每种字符出现的次数

计算字符串中每种字符出现的次数[Dictionary泛型集合用法]

前几天,同学问了我一道程序员的面试题,题目是“统计用户输入的一串数字中每个数字出现的次数”。

当时看到这个题目,我的第一想法就是:

1.先判断用户输入的是否是数字,用if-else语句来判断;

2.将用户输入的数字字符串转换成char数组;

3.用for循环遍历每个字符,根据switch-case语句来逐一判断。

4.再建立一个int数组来接收判断后的结果,最后for循环输出。

class Program

{

static void Main(string[] args)

{

//计算用户输入的一串数字中每个数字出现的次数

Console.WriteLine("请输入一串数字");

string str = Console.ReadLine();

//将字符串转换为字符数组

char[] chnum = str.ToCharArray();

#region判断用户输入的是否是数字

for (int i = 0; i < chnum.Length; i++)

{//判断每一个字符是否是数字通过char的方法来判断

if (!char.IsNumber(chnum[i]))

{

Console.WriteLine("您的输入有误,请输入数字"); Console.ReadKey();

return;

}

}

#endregion

//定义一个新的数组来保存计数

int[] count=new int[9];

#region for循环遍历

//for循环遍历

for (int i = 0; i < chnum.Length; i++)

{

switch (chnum[i])

{

case'1':

count[0]++;

break;

case'2':

count[1]++;

break;

case'3':

count[2]++;

break;

case'4':

count[3]++;

break;

case'5':

count[4]++;

break;

case'6':

count[5]++;

break;

case'7':

count[6]++;

break;

case'8':

count[7]++;

break;

case'9':

count[8]++;

break;

}

}

#endregion

#region循环输出

for (int i = 0; i < count.Length; i++)

{

Console.WriteLine("含有的数字 {0} 的个数是:{1}", i + 1, count[i]);

}

#endregion

Console.ReadKey();

}

}

运行效果如下:

不过,这种方法有两个缺点就是,如果用户输入的不是数字(如字母或符号等),程序会提示错误,并退出;再者,也会统计出用户没有输入过的数字的个数为0个,如果某些时候不想知道没有输入的数字的个数,这种解法很不合适,而且代码修改起来也很复杂。

新解法:泛型集合

碰巧这几天接触了泛型集合,没想到用Dictionary来解这道题是那么的简单。代码如下:

class Program

{

static void Main(string[] args)

{

Console.WriteLine("请输入数字");

string numbers = Console.ReadLine();

//创建集合键为数字 char类型值为每个数字出现的次数 int类型

Dictionary dict = new Dictionary();

//将数字字符串转换为单个字符数组

char[] chs = numbers.ToCharArray();

for (int i = 0; i < chs.Length; i++)

{

//判断是否是数字用到char的isnumber方法

if (char.IsNumber(chs[i]))

{

//如果键中已含有该数字,则将其对应的值+1,否则不存在,加入键中值为1

if (!dict.ContainsKey(chs[i]))

{

//将每个数字字符作为键存入键值对中,值初始为1

dict.Add(chs[i], 1);

}

else

{

//值+1

dict[chs[i]]++;

}

}

}

//循环遍历键值对输出

foreach (KeyValuePair item in dict)

{

Console.WriteLine("数字:{0}出现了{1}次。",item.Key,item.Value); }

Console.ReadKey();

可见,简单的几行代码就解决了。

而且,这种解法完全解决了上面遇到的两个问题。

我觉得这个应该就是面试官想要的效果吧。(汗。。。不知道我那位同学的面试情况怎么样。。。)

写到这里,我又想到了见过的另一道面试题:“计算字符串中每种字符出现的次数”。

这要用我开始想到的那种思路来解得话,我岂不是要写26个case语句来判断吗,汗。。。。不知道面试官要是看到这么多代码岂不是会当场走人。。。显然这不是最好的解题办法。

还是用泛型集合来解:

class Program

{

static void Main(string[] args)

{

//计算字符串中每种字符出现的次数(面试题)。

//“Welcome to China , beijing”,

//不区分大小写,打印“W2”“e2”“o3”……

/*思路:1 将字符串都转换为小写形式,否则大小写会算各一个

* 2 以字符为键每个字符出现的次数为值建立 Dictionary泛型集合 * 3 将字符串转换为字符数组

* 4 循环遍历每个字符,加入集合中作为键,其对应的值初始为1

* 5 在加入键之前做一个判断,由于集合中的键不能重复,所以判断如果键中已经还有该字符

* 则不再加入该键,只把他的值+1

* 6 去除字符串中的空格 char.isLetter() 如果是字母,进行操作5

* 7 总结:主要是泛型集合的应用

*/

//例句:

//string sentences="Welcome to China , beijing";

Console.WriteLine("请输入一段字母");

string sentences = Console.ReadLine();

//将字符串都转换为小写形式

sentences = sentences.ToLower();

//建立泛型集合

Dictionary dict=new Dictionary();

//将字符串变成字符数组

char[] chs=sentences.ToCharArray();

//遍历每一个字符

for (int i = 0; i < chs.Length; i++)

{

//通过char的方法判断是否为字母,如果为字母,则进行下面的操作, //否则不操作

if (char.IsLetter(chs[i]))

{

//如果不包含该键,则加入集合中

if (!dict.ContainsKey(chs[i]))

{

//将每个字符加入集合中对应键,其值初始为1

dict.Add(chs[i], 1);

}

else

{

//否则,包含该键,只将其对应的值+1即可值的类型为int

//dict[chs[i]] = dict[chs[i]] + 1;

dict[chs[i]]++;

}

}

}

//循环遍历输出集合中的键值

foreach (KeyValuePair kv in dict)

{

Console.WriteLine("字母:{0}出现了{1}次。",kv.Key,kv.Value);

}

Console.ReadKey();

}

}

同样,代码很简单:

这时,我又突发奇想想到了另一种情况:

用户输入一串字母和数字的混合字符串如

“ddeieiei4954jjfjdji383ddjeuut3003k”

统计出每个数字或字母出现的次数,且数字在前,字母在后,数字和字母内没有顺序要求

如数字4 出现了2次

数字3 出现了4次

.......

........

字母d 出现了5次

...........

当然,最简单的还是用泛型集合来解了。。。。

最后来个总结吧:

个人认为,遇到一个新的问题的时候,关键是思路,把思路一步一步理顺了,就像我们老师说的那样,知道你要干什么,想好怎样去做,最后再去写代码。不要一上来就敲代码,思路都没搞清楚呢,最后肯定是问题多多。

希望这篇文章可以给像我这样正在找工作的应届生一些小小的帮助吧!

(突然觉得在大学里学的那些知识都太简单了,而且太深了也不讲。找工作时真的很无奈啊!!!)

Java统计字符串中每个字符出现次数

Java统计字符串中每个字符出现次数package com.perry.test; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; /** * * @author perry_zhao * 统计一个字符串中每个字符出现的次数(不忽略大小写) */ public class CountStr { public Map count(String str){ System.out.println("需要统计的字符串:"+str+"准备开始统计每个字符出现的次数..."); Map map = new HashMap(); String temp =""; for(int i=0; i

计算字符串中每种字符出现的次数

计算字符串中每种字符出现的次数[Dictionary泛型集合用法] 前几天,同学问了我一道程序员的面试题,题目是“统计用户输入的一串数字中每个数字出现的次数”。 当时看到这个题目,我的第一想法就是: 1.先判断用户输入的是否是数字,用if-else语句来判断; 2.将用户输入的数字字符串转换成char数组; 3.用for循环遍历每个字符,根据switch-case语句来逐一判断。 4.再建立一个int数组来接收判断后的结果,最后for循环输出。 class Program { static void Main(string[] args) { //计算用户输入的一串数字中每个数字出现的次数 Console.WriteLine("请输入一串数字"); string str = Console.ReadLine(); //将字符串转换为字符数组 char[] chnum = str.ToCharArray(); #region判断用户输入的是否是数字 for (int i = 0; i < chnum.Length; i++) {//判断每一个字符是否是数字通过char的方法来判断 if (!char.IsNumber(chnum[i]))

{ Console.WriteLine("您的输入有误,请输入数字"); Console.ReadKey(); return; } } #endregion //定义一个新的数组来保存计数 int[] count=new int[9]; #region for循环遍历 //for循环遍历 for (int i = 0; i < chnum.Length; i++) { switch (chnum[i]) { case'1': count[0]++; break; case'2': count[1]++; break; case'3':

统计字符的出现次数

COUNTIF函数 例1 统计在一串编号中的某个字符的个数 假设数据在A1至A10单元格中,数据为:sdf23fd,ds34fd,ds2,fd123,... 要统计数据中含有2的个数,公式 =COUNTIF(A1:A10,"*2*") 例2 数据(a) 数据(b) apples 32 oranges 54 peaches 75 apples 86 公式说明(结果) =COUNTIF(A2:A5,"apples") 计算第一列中苹果所在单元格的个数 (2) =COUNTIF(A2:A5,A4) 计算第一列中桃所在单元格的个数 (2) =COUNTIF(A2:A5,A3)+COUNTIF(A2:A5,A2) 计算第一列中柑桔和苹果所在单元格的个数 (3) =COUNTIF(B2:B5,">55") 计算第二列中值大于 55 的单元格个数 (2) =COUNTIF(B2:B5,"<>"&B4) 计算第二列中值不等于 75 的单元格个数 (2) =COUNTIF(B2:B5,">=32")-COUNTIF(B2:B5,">85") 计算第二列中值大于或等于 32 且小于或等于 85 的单元格个数 (3) SUMPRODUCT 例1 如何利用EXCEL函数统计一个单元格中相同字符个数,比如A1中有"ABCBA",将"B"的个数统计出 A1是 "ABCBA" 任何单元格输入公式: =SUMPRODUCT((MID(A1,ROW($1:$99),1)="A")*1) 显示 2 注意: 英文大小写会被视为相同字符 例2 在Excel中如何用函数统计出一个文本字符串中的字符种类的个数?比如A2表格中是“aabb”字符,要在B2中显示出“2”(2种字符,a和b),要用什么样的函数?用LEN函数只能统计字符的个数,不能统计出字符种类的个数。哪位高手能帮我解答一下!谢谢! 普通公式: =SUMPRODUCT(N(FIND(MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1),A2)=ROW(INDIRECT("1:"&L EN(A2))))) 数组公式:

统计子串出现次数

数据结构实验报告 1、问题描述 设计算法,计算一个子串在一个字符串中出现的次数,如果字符串中不存在该子串,计次数为0. 2、基本要求 (1)设计获取字符串及子串的方法。 (2)设计算法统计子串在字符串中出现的次数。 (3)输入:字符串与子串。 (4)输出:字符串、子串及子串在字符串中出现的次数。 3.数据结构设计 typedef struct { char *ch; int length; }hstring; 4.串的基本操作 status strassign(hstring *t,char *cha)//串分配函数 { char *c; int i,j; for(i=0,c=cha;*c;++i,++c); if(!i){t->ch=NULL;t->length=0;} else { if(!(t->ch=(char*)malloc(i*sizeof(char)))) exit (0); for(j=0;jch+j)= *(cha+j); t->length=i; } return 1; } int strcompare(hstring *s,hstring *t)//串比较函数 { int i; for(i=0;i<(s->length)&&i<(t->length);++i) if(s->ch[i]!=t->ch[i]) return s->ch[i]-t->ch[i];

return s->length-t->length; } status concat(hstring *t,hstring s1,hstring s2)//串连接函数 { int i,j; t->length=s1.length+s2.length; if(!(t->ch=(char*)malloc(t->length*sizeof(char)))) exit (0); for(i=0;ich+i)=*(s1.ch+i); for(j=0;jch+i+j)=*(s2.ch+j); return 1; } status substring(hstring *sub,hstring s,int pos,int len) //求子串{ int i; if(pos<1||pos>s.length||len<0||len>s.length-pos+1) { sub->length=0; sub->ch=NULL; return 0; } if(!len){sub->ch=NULL;sub->length=0;} else { if(!(sub->ch=(char*)malloc(len*sizeof(char)))) exit (0); for(i=0;ich+i)=*(s.ch+pos-1+i); sub->length=len; } return 1; } status printstring(hstring s) { int i; if(!s.ch) {printf("over the zone\n"); return 0;} for(i=0;i

如何用EXCEL统计某字符或关键字出现次数

excel为我们解决了很多财务报表上的问题,极大地提高了我们的工作效率,节省了工作时间。并且能够保质保量的完成繁琐的财务工作。不仅在财务应用上,在学生时代,我们也会在平常的考试中使用到excel办公软件。 问题:原始数据区域为A1:A5,每个单元格中包含不同或相同的文本,要根据需求求某个字符或关键字在各单元格文本中出现的次数总和。 答案:接下来将是解决这个问题的答案。 1、原始数据区域为A1:A5,每个单元格中包含不同或相同的文本,要根据需求求某个字符或关键字在各单元格文本中出现的次数总和。 2、首先,求北京出现的次数(整个单元格内容等于北京)。我们输入公式: =COUNTIF(A1:A5,北京) 结果返回1,因为源数据中只有A1单元格整个文本内容是北京。 3、然后,求A1:A5文本中包含北京这个关键词的单元格数量。我们输入公式:=COUNTIF(A1:A5,*北京*) 结果返回2,因为A1和A3都包含北京这个关键词。 4、最后,求A1:A5个单元格文本中京字出现的总次数。我们输入公式:=SUMPRODUCT((LEN(A1:A5)-LEN(SUBSTITUTE(A1:A5,京,)))) 结果返回3,因为A1,A3和A4这三个单元格都包含京字。如果一个单元格中包含两个京字也是会被统计出来的。 5、下面具体解释一下第4步中的公式用法。首先看一下SUBSTITUTE()函数。SUBSTITUTE()函数语法是这样的:SUBSTITUTE(源数据,要替换的内容,替换的结果)。比如:SUBSTITUTE(A1,京,)意思是把A1中的所有京字都替换成空。 6、LEN()函数返回一个文本的长度,比如说LEN(A1)就返回A1的单元格内容是几个字符。 7、LEN(SUBSTITUTE(A1,京,))返回的结果是A1单元格文本将京字都替换成空以后的文本长度。 8、A1单元格原字符长度减去把京字替换成空的文本长度,结果就是京字在A1单元格文本中出现的总次数。 9、最后,用SUMPRODUCT函数将A1:A5中各自出现的京字次数加和就得到了京字在原始

java用Map统计字符串中每个字符出现的次数

package com.baidu.oct4; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import java.util.TreeMap; /*用 Map统计字符串中每个字符出现的个数 * (可以加限制条件,只统计英语字母或者汉字等) * */ public class TreeSetDemo { public static void main(String [] args) { String str = "abcdefyadhisn,xiednefmecd casdxsdffg@$%tjukdfds,生活是一杯酒,生活是一首诗"; String count =getCount(str); System.out.println(count); } // 获取统计的方法 public static String getCount(String str) { char [] ch = str.toCharArray(); Map map = new TreeMap(); for (int i = 0; i < ch.length; i++) { // 只统计里面英语字母的个数 // if(!(ch[i]>'a'&&ch[i]<'z'||ch[i]>'A'&&ch[i]<'Z')) // continue; // 只统计其中汉字个数 // // if(!(ch[i]>='一'&&ch[i]<='龥')) // \u4e00 \u9fa5 // continue; // 获取字符数组顺序对应的值 Integer value = map.get(ch[i]); int count=1; if(value!=null) {

统计字符串中某个字符出现次数

武汉理工大学《微机原理与接口技术》课程设计 目录 摘要 (1) 1课程设计目的 (2) 2设计条件及要求 (2) 2.1程序设计条件 (2) 2.2程序设计要求 (2) 3总体方案论证 (2) 3.1总体方案思路 (2) 3.2方案注意事项 (3) 3.3具体方案论证 (3) 3.3.1方案一 (3) 3.3.2方案二 (4) 3.3.3方案论证 (4) 4流程图设计及说明 (5) 4.1流程图 (5) 4.2设计说明 (5) 5软件设计关键问题和相应程序段 (6) 5.1关键问题说明 (6) 5.2问题解决方法 (6) 5.3相应程序段 (7) 6程序调试 (9) 7结果记录及分析 (10) 8课程设计收获及心得体会 (12) 9参考文献 (13) 10附录 (14)

摘要 微机原理与接口技术作为计算机科学领域的基础知识,尽管计算机科学高速发展,但基本原理依然不变,即是遵循冯·诺依曼基本思想的。学习并能掌握好微机原理与接口技术这门知识是非常重要的,通过对这门知识的了解可以简单的编写一些日常中经典的控制程序。 本文通过汇编语言编写程序,完成统计字符串中某个字符出现次数这一基本功能。下面会介绍该程序的编程思路,并对程序设计中遇到的问题进行深入的研究。 关键字:微机统计编程

统计字符串中某个字符出现次数 汇编语言程序设计 1课程设计目的 通过本次课程设计,熟悉微机原理与接口技术的基本理论,使学生能够进一步了解微型计算机工作原理, 微型计算机的硬件结构及微型计算机软件编程,掌握使用汇编语言编写程序的方法,并进一步提高编程设计能力。 2设计条件及要求 本次《微机原理与接口技术》课程设计的题目为统计字符串中某个字符出现的次数,为汇编程序设计。 2.1程序设计条件 采用16位微处理器8086 CPU以及86系列微型计算机的指令系统; 软件设计平台为多功能微型计算机实验软件MFS中的微机原理实验集成环境MF2KP。 2.2程序设计要求 设计汇编语言程序,实现统计字符串中某个字符出现次数的功能,具体功能要求如下:(1)提示输入字符串;输入任意字符串string ,点击Enter结束输入; (2)提示输入字符;输入任意字符ch,点击Enter 结束输入; (3)输出字符串string 中字符ch的出现次数。点击Enter程序退出。 3总体方案论证 3.1总体方案思路 要使用汇编语言实现统计字符串中某个字符出现次数的功能,总体的思路为:取出字符串string中的字符,依次与字符ch进行比较,同时统计该字符与字符ch相同的次数,最后输出结果到屏幕

C语言算法,查找字符串在文中出现的次数。

目录 一.问题描述-------------------------------------------1 二.基本要求---------------------------------------------------------------1三.数据结构----------------------------------------------------------------1四.算法设计思想及流程图-----------------------------------------------1 五.源程序-------------------------------------------------------------------5 六.测试情况----------------------------------------------------------------8 参考文献---------------------------------------------------------------------8

一.问题描述 建立一个文本文件,每个单词不包含空格且不跨行,单词由字符序列构成且区分大小写。统计给定单词在文本文件中出现的总次数;检索输出某个单词出现在文本中的行号、在该行中出现的位置。 二.基本要求 1.建立一个文本文件 2.输入一个不含空格的单词,统计输出在文本中出现的次数 3.输入一个,检索并输出在文本中出现的行号和该行中的相应位置 三.数据结构 1.子函数设计: (1). void get_next(SString T,int next[]) //求next值 (2). int Index(SString S,SString T,int pos) //KMP算法 (3). void find(char name[],SString keys) //查找函数 2. 主函数调用设计: int main() //主函数 3. 结构设计: #define MAXSTRLEN 255 //最大串长 typedef char SString[MAXSTRLEN+1]; //串的定长顺序存储表示 int next[MAXSTRLEN] //KMP算法中用到的next 四.算法设计思想及流程图 主函数设计: int main() { char name[50]; //存储输入的小说路径字符串 SString words[10]; //定义字符串数组,用于存储输入的关键字 int n,i; printf("Please input the name of the novel:\n"); scanf("%s",name); printf("How many words do you want to find?(n<10)\n"); scanf("%d",&n); printf("Please input the words you want to find:\n"); for (i=0;i

查找字符出现次数.bat

::专业的电脑医生原创 ::转载请说明 setlocal ENABLEDELAYEDEXPANSION set /p "str=请输入字符串:" set /p "char=请输入要统计的字符(串):" call:Length "%str%" "str_len" call:Length "%char%" "char_len" set /a "n=0" set /a "count=0" call:Find "%str%" "%char%" "%char_len%" "0" "pos" if "%pos%"=="-1" (echo 没找到。&pause>nul&exit /b 1) :loop set /a "count+=1" set /a "pos+=%char_len%" call:Find "%str%" "%char%" "%char_len%" "%pos%" "pos" if "%pos%"=="-1" goto:output goto:loop :output echo 共有%count%个匹配项。 pause>nul exit /b 0 :Length :: Length [str] [var] setlocal set /a "_str_n=0" set "__str=%~1" :_len_func if /i "!__str:~%_str_n%,1!"=="" goto:__end_func set /a "_str_n+=1" goto :_len_func :__end_func endlocal&set "%~2=%_str_n%"

:Find :: Find [strCheck] [strMatch] [len] [start] [var] setlocal set "_strCheck=%~1"&set /a "_match_len=%~3"&set "_strMatch=%~2"&set "_temp_str=" set /a "_pos=%~4"&set /a "_temp_pos_check=0"&set /a "_temp_pos_match=0" :_find_loop ::ping /n 2 127.1>nul 2>nul if /i "!_strCheck:~%_pos%,1!"=="" (set /a "_pos=-2"&goto:_end_find) if /i "!_strCheck:~%_pos%,1!"=="!_strMatch:~0,1!" ( set /a "_pos-=1" set "_temp_str=!_strCheck:~%_pos%,%_match_len%!" if /i not "%_temp_str%"=="%_strMatch%" goto:_end_find else set /a "_pos+=1" ) else (set /a "_pos+=1"&goto:_find_loop) :_end_find endlocal&set /a "%~5=%_pos%+1" goto:EOF

VB字符出现最多字符以及次数数统计

Vb经典题型 1,文本出现字符次数最多的字母,及出现的次数 Dim a(1 To 26) As Integer Dim max As Integer n = Len(s) For i = 1 To n k = Asc(Mid$(s, i, 1)) If (k >= 65 And k <= 90) Then a(k - 64) = a(k - 64) + 1 End If If (k >= 97 And k <= 122) Then a(k - 96) = a(k - 96) + 1 End If Next max = 0 For m = 1 To 26 If max < a(m) Then max = a(m) End If Next Text2 = max For m = 1 To 26 If a(m) = max Then l = m End If Next Text1 = Chr(l + 64) 2,打印出菱形 Private Sub Form_Click() For i = 1 To 5 For j = 1 To 6 - i Print " "; Next j For j = 1 To 2 * i - 1 Print "*"; Next j Print

Next i For i = 1 To 4 For j = 1 To i + 1 Print " "; Next j For j = 1 To (9 - 2 * i) Print "*"; Next j Print Next i End Sub 3,最长单词的长度,以该长度最后一次出现的单词是? Option Base 1 Dim s As String Private Sub Command1_Click() Open App.Path & "\in5.dat" For Input As #1 s = Input(LOF(1), #1) Close #1 End Sub Private Sub Command2_Click() '需考生编写 帮我解释一下一下的代码: Dim s as string

统计一个给定字符串中指定的字符出现的次数

/* 题目描述: 统计一个给定字符串中指定的字符出现的次数。 输入: 测试输入包含若干测试用例,每个测试用例包含2行,第1行为一个长度不超过5的字符串,第2行为一个长度不超过80的字符串。 注意这里的字符串包含空格,即空格也可能是要求被统计的字符之一。当读到'#'时输入结束,相应的结果不要输出。 输出: 对每个测试用例,统计第1行中字符串的每个字符在第2行字符串中出现的次数,按如下格式输出: c0 n0 c1 n1 c2 n2 ... 其中ci是第1行中第i个字符,ni是ci出现的次数。 样例输入: I THIS IS A TEST i ng this is a long test string # 样例输出: I 2 i 3 5 n 2 g 2 */ #include #include int main(){ char a[6],b[201]; int a_length,b_length; int i,j,sum; while(gets(a)&&a[0]!='#'){//第一行字符读入,并判断首字符是否为结束符 a_length=strlen(a);//获取第一行字符长度 gets(b);//第二行字符读入 b_length=strlen(b);//获取第二行字符长度 for(i=0;i

} return 0; }

统计一个字符串中,每个字符出现的次数

package com.haotj.demo13; import java.util.Map; import java.util.Set; import java.util.TreeMap; public class Test { public static void main(String[] args) { String str = "asdlkfjlaksdlkjfdsjlkazxcsdklfwuertiopwrljlflsdalxvclzjlksdfljklsdfuiafjdgllfdgdaslfsdjkldskfjdsl"; Map map = countChar(str); //遍历 //1- Set set = map.keySet(); for(Character key : set) { System.out.println(key + "=" + map.get(key)); } //2- //Map中无迭代器,不能如下使用 // for(Map.Entry me : map) // { // } Set> entrys = map.entrySet(); for(Map.Entry me : entrys) { System.out.println("===" + me.getKey() + "=" + me.getValue()); } } /** * 统计一个字符串中,每个字符出现的次数 * <功能详细描述> * @param str:被统计的字符串 * @return 记录了每个字符及对应该字符出现的次数 * @see [类、类#方法、类#成员] */ public static Map countChar(String str) {

39.prog.c统计a到z字母出现的次数

请编写一个函数void fun(char *tt,int pp[]),统计在tt字符串中'a'到'z'26个字母各自出现的次数,并依次放在pp所指数组中。 例如,当输入字符串:abcdefgabcdeabc后,程序的输出结果应该是:3 3 3 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 //注意后面的字母也是存在的,不过此处没输进去 注意:部分源程序存在文件prog.c中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 本题的考核点是统计给定字符串中 'a' 到 'z' 26个字母各自出现的次数。 解题思路: 1、由于存放26个小写字母的数组pp[]在主函数中未赋初值,所以在函数fun()中第一步就是将其初始化,以保证程序运行安全; 2、定义一个指针变量p_tt指向字符串tt; 3、根据指针指向是否为空,建立循环,检验字符串中的每一个字符,使用switch分支判断语句,累加计算出各个字母的个数; 4、在上面的循环中,将每个字母的个数存放到pp[]数组相对应的元素中。 本评析仅供参考。 void fun(char *tt, int pp[]) { char *p_tt=tt; int i=0; while(i<26){ pp[i]=0; i++;}/*初始化pp数组中的值*/ for(;*p_tt!='\0';p_tt++)/*判断p_tt指针是否指向空,如果是则已统计完字符串tt中的各个字母的个数并退出循环,否则指针指向字符串tt中的下一个字符*/ { switch(*p_tt){

Excel统计某字符或关键字出现的次数

Excel统计某字符或关键字出现的次数 来源:Excel格子社区 原始数据区域为A1:A5,每个单元格中包含不同或相同的文本,要根据需求求某个字符或关键字在各单元格文本中出现的次数总和。 首先,求“北京”出现的次数(整个单元格内容等于“北京”)。我们输入公式: =COUNTIF(A1:A5,"北京") 结果返回1,因为源数据中只有A1单元格整个文本内容是“北京”。 然后,求A1:A5文本中包含“北京”这个关键词的单元格数量。我们输入公式: =COUNTIF(A1:A5,"*北京*") 结果返回2,因为A1和A3都包含“北京”这个关键词。

最后,求A1:A5个单元格文本中“京”字出现的总次数。我们输入公式: =SUMPRODUCT((LEN(A1:A5)-LEN(SUBSTITUTE(A1:A5,"京","")))) 结果返回3,因为A1,A3和A4这三个单元格都包含“京”字。如果一个单元格中包含两个“京”字也是会被统计出来的。 下面具体解释一下第4步中的公式用法。 首先看一下SUBSTITUTE()函数。SUBSTITUTE()函数语法是这样的:SUBSTITUTE(源数据,要替换的内容,替换的结果)。比如:SUBSTITUTE(A1,"京","")意思是把A1中的所有“京”字都替换成空。

LEN()函数返回一个文本的长度,比如说LEN(A1)就返回A1的单元格内容是几个字符。 LEN(SUBSTITUTE(A1,"京",""))返回的结果是A1单元格文本将“京”字都替换成空以后的文本长度。

A1单元格原字符长度减去把“京”字替换成空的文本长度,结果就是“京”字在A1单元格文本中出现的总次数。 最后,用SUMPRODUCT函数将A1:A5中各自出现的“京”字次数加和就得到了“京”字在原始A1:A5中出现的总次数。

用Word统计文字出现的次数

用Word统计文字出现的次数 2005-09-26 08:31 作者:出处:天极blog 责任编辑:still 有的时候,我们要在一个文档中查找某个文本出现的总次数,也就是查找该文本的总数量,例如在一份违纪登记表格中查找一个姓名被记载的总数,类似的应用还有很多。但Word没有这样的功能,我编写了一个宏,使Word具有统计单个文本总数量的功能。下面介绍实现方法。 图1 第一步单击Word菜单[工具]→[宏]→[宏],输入宏的名称“FindText” ,然后单击[创建]按钮。 第二步在弹出的VisualBasic编辑器的代码窗口中完成以下内容: Sub FindText()(粘贴后删除) Text = InputBox("请输入要查找的文本:", "提示") With ActiveDocument.Content.Find Do While .Execute(FindText:=Text) = True tim = tim + 1 Loop

End With MsgBox ("当前文档查找到 " + Str(tim) + " 个 " + Text), 48, "完成" End Sub(粘贴后删除) 第三步录入完毕后,单击菜单[文件]→[关闭并返回到Micrcsoft后Word]。 第四步单击菜单[工具]→[自定义],单击“命令”选项卡,在“类别”中选择“宏”,将右边的“Normal.NewMacros.FindText”命令拖入“编辑”菜单中,并右击拖入的命令,在“命名”框中重命名为“查找文本数量”(如图)。 以后要统计文本数量时,只要单击[编辑]→[查找文本数量],按提示输入要查找的内容,单击[确定]就得到统计结果。

相关文档
最新文档