怎么统计输入的一个字符串中每个字母出现的次数?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么统计输入的一个字符串中每个字母出现的次数?相关的知识,希望对你有一定的参考价值。
编写一个程序来统计字符串中每个字母出现的次数。
根据该思路,做个结构体,一个成员是字符,一个成员是出现个数。建立链表,对字串从头开始检查。一遇上小写字母即从表头开始核对,如果字符出现过,累加出现次数,如果没有该字符,在表尾建立新结点。
使用编写的程序如下:
/*
* 需求:统计字符串中每个字母:
* 说明:编写程序,提示用户输入一个字符串,
* 然后统计字符串中每个字母出现的个数,忽略字母的大小写。
*
* 原理:
* 1.使用String类中的toLowerCase()方法,将字符串中的大写字母转换成小写形式。
* 2.构造一个具有26个int值得数组ch ,每个元素记录一个字母出现的次数。
* 即,ch[0]记录a的个数,ch[1]记录b的个数。
* 3.对字符中的每一个字符,判断其是否小写字母,如果是,则数组中的相应计数器加1.
*
* */
ublic class CountEachLetter
/**
* @param args
*/
public static void main(String[] args)
// TODO Auto-generated method stub
String str = JOptionPane.showInputDialog("Please Enter a string: ");
int[] counts = countLetters(str.toLowerCase());
String out = "";
for(int i=0;i<counts.length;i++)
if(counts[i]!=0)
// out += (char)('a'+i)+" appears"+counts[i]+((counts[i]==1)?"time\\n":"times\\n");
out +=(char)('a'+i)+":出现了"+counts[i]+"次.\\n";
JOptionPane.showMessageDialog(null, out);
public static int[] countLetters(String s)
int[] ch = new int[26];
for(int i=0;i<s.length();i++)
if(Character.isLowerCase(s.charAt(i)))
ch[s.charAt(i)-'a']++;//
return ch;
int main()
int cnt[128]=0;//用来统计个数。
char str[200];//存储字符串。
int i;
gets(str);//输入字符串。
for(i = 0; str[i]!='\0'; ++i)//遍历字符串。
cnt[str[i]]++;//统计个数。
for(i=0;i<128; i ++)//遍历统计到的值。
if(cnt[i]!=0)//如果出现过则打印值,及个数。
printf("%c:%d\n", i, cnt[i]);//输出结果。
return 0;
字母统计
题目描述
输入一行字符串,计算其中A-Z大写字母出现的次数
输入描述:
案例可能有多组,每个案例输入为一行字符串。
输出描述:
对每个案例按A-Z的顺序输出其中大写字母出现的次数。
分析:
对每一个出现的字符用数组count[26]的一个元素统计
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
int main(){
string str;
int count[26];
for(int i = 0; i < 26; i++)
count[i] = 0;
while(cin >> str){
for(int i = 0; i < str.size(); i++){
if(str[i] >= ‘A‘ && str[i] <= ‘Z‘)
count[str[i] - ‘A‘]++;
}
for(int i = 0; i < 26; i++){
printf("%c:%d
", ‘A‘ + i, count[i]);
//cout << ‘A‘ + i << ":" << count[i] << endl;
}
}
return 0;
}
以上是关于怎么统计输入的一个字符串中每个字母出现的次数?的主要内容,如果未能解决你的问题,请参考以下文章
c语言编程。从标准输入设备上输入一个字符串,分别统计其中每个数字,空格,字母及其他字符出现的次数。