统计字符出现频率(java)

package three;
/*本程序目的是统计文件里的字符出现的频率。*/

import java.io.*;
class word{
	int num;
	String word;
	public word()
	{
		num=0;
		word="";
	}
}
public class treat {
	public static void main(String args[])
	{
		String s;
		String arr[]=new String[500000];
		int temp[]=new int[500000];
		int num1[]=new int[500000];//1
		int num2[]=new int[500000];
		String deg[]=new String[500000];
		int char1=0,sum=0;
		int num=0;//总数
		int asp[]=new int[100];
		char zimu[]=new char[100];
		try {
			BufferedReader br=new BufferedReader(new FileReader("F:/新建文件夹/1/harry.txt"));

			try {
				arr[char1]=new String();
				while((s=br.readLine())!=null)
				{

					for(int i=0;i<s.length();i++)
					{

						if(s.charAt(i)>=65&&s.charAt(i)<=90)
								{
									num++;
							     asp[(int)s.charAt(i)-65]++;
								}
								if(s.charAt(i)>=97&&s.charAt(i)<=122)
								{
									num++;
									asp[(int)s.charAt(i)-97+26]++;
								}

					}
					for(int i=0;i<s.length();i++)
					{

						if(s.charAt(i)==‘ ‘&&s.charAt(i+1)==‘ ‘)
							continue;
						if(s.charAt(i)!=‘ ‘&&s.charAt(i)!=‘\n‘&&s.charAt(i)!=‘,‘&&s.charAt(i)!=‘.‘&&s.charAt(i)!=‘!‘&&s.charAt(i)!=‘?‘&&s.charAt(i)!=‘"‘)
						{

							arr[char1]+=s.charAt(i);
							continue;

						}
						if(s.charAt(i)==‘ ‘&&s.charAt(i+1)!=‘ ‘&&s.charAt(i+1)!=‘\n‘&&s.charAt(i+1)!=‘,‘&&s.charAt(i+1)!=‘.‘&&s.charAt(i+1)!=‘!‘&&s.charAt(i+1)!=‘?‘&&s.charAt(i+1)!=‘"‘)
								{
								continue;
								}
						else { char1++;
							arr[char1]=new String();
						}

					}
				}

				for(int i=0;i<52;i++)
				{
					if(i<=26)
						zimu[i]=(char)(65+i);

					if(i>=26)
					{
						zimu[i]=(char)(97+i-26);
					}

				}
				//排序
				for(int i=0;i<52;i++)
				{
					for(int j=i+1;j<52;j++)
						if(asp[i]<asp[j])
						{
							int ps=0;
							ps=asp[i];
							asp[i]=asp[j];
							asp[j]=ps;
							char pr=‘x‘;
							pr=zimu[i];
							zimu[i]=zimu[j];
							zimu[j]=pr;
						}
				}
				for(int i=0;i<52;i++)
				{
					System.out.println(zimu[i]+"频率:"+String.format("%.2f", (double)asp[i]/num*100)+"%");
				}
				/*for(int i=0;i<char1;i++)
				{
					System.out.println(arr[i]);
				}
				for(int i=0;i<char1;i++)
				{
				if(num1[i]!=1)
				{
					temp[i]=1;
					for(int j=i+1;j<char1;j++)
				{

						if(num1[j]!=1)
						{
						if(arr[i].equals(arr[j]))
					    {
						 num1[j]=1;
						temp[i]+=1;
					    }
						}
				}
				}
					}

				for(int i=0;i<char1;i++)
				{
					if(num1[i]==1)
						continue;
					else
						{
						deg[sum]=new String(arr[i]);
						num2[sum]=temp[i];
						sum++;
						}

				}*/
				/*for(int i=0;i<char1;i++)
				{
					System.out.println(num1[i]+" "+temp[i]+" "+deg[i]+" "+num2[i]);
				}
				/*for(int i=0;i<sum;i++)
				{
					for(int j=i+1;j<sum;j++)
					{
						if(num2[i]<num2[j])
						{
							int pw=0;
							pw=num2[i];
							num2[i]=num2[j];
							num2[j]=pw;
							String as="";
							as=deg[i];
							deg[i]=deg[j];
							deg[j]=as;
						}
					}
				}*/
				/*for(int i=0;i<sum;i++)
				{
					System.out.println("vocabulary: "+deg[i]+"出现次数:"+num2[i]);
				}*/
			} catch (IOException e) {
				// TODO 自动生成的 catch 块
				e.printStackTrace();
			}
		} catch (FileNotFoundException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}

	}

}

 

原文地址:https://www.cnblogs.com/w669399221/p/12152130.html

时间: 2024-07-31 18:36:30

统计字符出现频率(java)的相关文章

英文字符进行频率的统计,直方图输出

问题 对指定文件中的英文字符进行频率的统计,不区分大小写(都按照大写统计),忽略非字母.并使用频率直方图的形式显示出来. 来源 贴吧吧友提问 代码 #include<iostream> #include<cctype> #include<cstdio> #include<cassert> using namespace std; class LetterCount { private: enum{LETTERS_SUM=26}; //常量:个英文字母有26个

【华为练习题】字符出现频率

[华为练习题]字符出现频率 题目 描述:写出一个程序,输出基准字符串中统计指定字符出现的频率 字符串仅包括英文大小写字母和空格.逗号.点号 小数点后保留2位有效数字,第三位四舍五入 举例: 输入:wo shi, yi zhi.xiao xiao niao ' '(空格) 输出:0.17 接口说明: /* 功能: 输入的基准字符串中统计指定字符出现的频率 字符串仅包括英文大小写字母和空格.逗号.点号 小数点后保留2位有效数字,第三位四舍五入 输入: String pString 输入的基准字符串

Hdu 1860 统计字符

统计字符 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 11529    Accepted Submission(s): 7195 Problem Description 统计一个给定字符串中指定的字符出现的次数 Input 测试输入包含若干测试用例,每个测试用例包含2行,第1行为一个长度不超过5的字符串,第2行为一个长度不超过80的字

按字符出现频率对字符进行排序

#include<iostream> #include<string> #include<algorithm> using namespace std; void tongji() { string input; string output; getline(cin,input);//读入带空格的字符串 int n; n=input.size();//求字符串的大小 int a[255]={0}; int b[255]={0}; bool c[255]={false};

代码题(61)— 根据字符出现频率排序

1.451. 根据字符出现频率排序 给定一个字符串,请将字符串里的字符按照出现的频率降序排列. 示例 1: 输入: "tree" 输出: "eert" 解释: 'e'出现两次,'r'和't'都只出现一次. 因此'e'必须出现在'r'和't'之前.此外,"eetr"也是一个有效的答案. 示例 2: 输入: "cccaaa" 输出: "cccaaa" 解释: 'c'和'a'都出现三次.此外,"aaac

(count 或直接枚举) 统计字符 hdu1860

统计字符(很水) 链接:http://acm.hdu.edu.cn/showproblem.php?pid=1860 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 12731    Accepted Submission(s): 7918 Problem Description 统计一个给定字符串中指定的字符出现的次数 Input 测试

杭电oj1860:统计字符(字符串hash / 水题)

统计字符 题目链接 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Description 统计一个给定字符串中指定的字符出现的次数 Input 测试输入包含若干测试用例,每个测试用例包含2行,第1行为一个长度不超过5的字符串,第2行为一个长度不超过80的字符串.注意这里的字符串包含空格,即空格也可能是要求被统计的字符之一.当读到'#'时输入结束,相应的结果不要输出.

C语言统计字符数

一段统计字符数的代码及分析. 先贴代码: #include<stdio.h> #include<string.h>//提供memset函数原型. int main() { char S[80]; int C[26],length;//一段声明,即字符数组S,整型数组C,和整型length. memset(C,0,sizeof(C));//将C清零,至于为什么不把字符数组清零,稍后有一段实验过程. for(int i=0;i<=3;i++)//循环4次,读入4行字符串. { g

29:统计字符数

29:统计字符数 查看 提交 统计 提问 总时间限制:  1000ms 内存限制:  65536kB 描述 给定一个由a-z这26个字符组成的字符串,统计其中哪个字符出现的次数最多. 输入 输入包含一行,一个字符串,长度不超过1000. 输出 输出一行,包括出现次数最多的字符和该字符出现的次数,中间以一个空格分开.如果有多个字符出现的次数相同且最多,那么输出ascii码最小的那一个字符. 样例输入 abbccc 样例输出 c 3 来源 1744 1 #include<iostream> 2 #