`
chengji518
  • 浏览: 6425 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

如何高效统计字符串中相同的字符个数?

阅读更多
如何高效统计字符串中相同的字符个数呢?
我想到的只有这种职下方法,但出了问题,请求解决:
	//统计出一个字符串中相同的字符个数
	public static void count(String str){
		int num =0;
		str="aaaabcdefgh";
		String str2 =null;
		for(int i=0;i<str.length();i++){
			char cha1 = str.charAt(i);
///			System.out.println(cha1);
			for(int j=0;j<=i;j++){
				char cha2 = str.charAt(j);
				if(cha1==cha2){
///					System.out.println(cha2);
					num++;
				}
				if(j==i){
					System.out.println(cha1+"个数:"+num);
				}
			}
			
			num =0;
		}
		
	}

打印出来:
a个数:1
a个数:2
a个数:3
a个数:4
b个数:1
c个数:1
d个数:1
e个数:1
f个数:1
g个数:1
h个数:1 

不知道是什么问题,字符a会打印出4次。望指出一下。谢谢
0
1
分享到:
评论
1 楼 ygyz03 2011-05-09  
	public static void count(String str){
		Map<Character,Integer> map = new TreeMap<Character,Integer>() ;
		for(int i=0;i<str.length();i++){		    
			char c = str.charAt(i) ;
			if(map.containsKey(c)){
				int n = map.get(c) ;
				n++ ;
				map.put(c, n) ;
			}else{
				map.put(c,1) ;
			}
		}
		
		for(Map.Entry<Character,Integer> me:map.entrySet()){
			System.out.println(me.getKey() + "出现了" + me.getValue()+"次") ;
		}
	}

相关推荐

    数据结构C++ 串的基本操作和BF算法与KMP算法的比较—适合初学者和复习.docx

    以下代码包含一些对字符串的基本操作,并展示了以上两个具体使用例子以及从运行时间上直观看出KMP算法的高效性。以下由C++程序设计语言编写的代码均已通过Dev-C++5.4.0和VS。为了防止误修改,文档已限制编辑(可复制...

    C/C++面试题目及解答.doc

    这个函数主要用来实现(字符串或基本数据类型)向字符串的转换功能。如果源对象是字符串,并且指定 %s 格式符,也可实现字符串拷贝功能。 3.memcpy 函数顾名思义就是 内存拷贝,实现 将一个 内存块 的内容复制到...

    MYSQL常用命令大全

    MySQL以YYYY-MM-DD格式来显示DATE值,但是允许你使用字符串或数字把值赋给DATE列 4.CHAR(M) 型:定长字符串类型,当存储时,总是是用空格填满右边到指定的长度 5.BLOB TEXT类型,最大长度为65535(2^16-1)个字符...

    深入浅析正则表达式re模块(部分)

    官方定义:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。 ​ 什么是正则表达式: ...

    C#开发实例大全(基础卷).软件开发技术联盟(带详细书签) PDF 下载

    主要内容有C#开发环境的使用、C#语言基础应用、字符串处理技术、数组和集合的使用、面向对象编程技术、数据结构与算法、Windows窗体基础、特色窗体界面、窗体控制技术、MDI窗体和继承窗体、Windows常用控件的使用、...

    MySQL命令大全

    MySQL以YYYY-MM-DD格式来显示DATE值,但是允许你使用字符串或数字把值赋给DATE列 4.CHAR(M) 型:定长字符串类型,当存储时,总是是用空格填满右边到指定的长度 5.BLOB TEXT类型,最大长度为(2^16-1)个字符。 6...

    《C#经典编程220例》.(明日科技).【带书签】-共3部分

    实例035 从字符串中分离文件路径、文件名及扩展名 51 实例036 对字符串进行加密与解密 53 实例037 开发一个进制转换器 56 实例038 将字符串的每个字符进行颠倒输出 60 实例039 根据标点符号对字符串进行分行 61 实例...

    明日科技C#开发入门及项目实战

    实例035 从字符串中分离文件路径、文件名及扩展名 实例036 对字符串进行加密与解密 实例037 开发一个进制转换器 实例038 将字符串的每个字符进行颠倒输出 实例039 根据标点符号对字符串进行分行 实例040 将汉字转换...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例074 将字符串的每个字符进行倒序输出 94 实例075 获取字符串中汉字的个数 94 实例076 批量替换某一类字符串 95 实例077 把异常与错误信息显示到窗体中 97 实例078 从字符串中分离文件路径、 文件名及扩展名 98 ...

    语言程序设计课后习题答案

    C++是一个更好的C,它保持了C的简洁、高效、接近汇编语言、具有良好的可读性和可移植性等特点,对C的类型系统进行了改革和扩充,因此C++比C更安全,C++的编译系统能检查出更多的类型错误。 C++语言最重要的特点是...

    IOI国家集训队论文集1999-2019

    周 源 -《浅析"最小表示法"思想在字符串循环同构问题中的应用》 ## 2004 何 林 -《信息学中守恒法的应用》 胡伟栋 -《减少冗余与算法优化》 金 恺 -《极限法——解决几何最优化问题的捷径》 李锐喆 -《细节...

    程序员二进制计算器 v1.36

    一个数的后面,可以跟有倍率运算符,表示该数乘以相应的倍数,例如: 2w = 20000 (2万) 13y = 1300000000 (13亿) 4k = 4096 3% = 0.03 (百分之3) 详见“倍率运算”部分。 三 运算结果的输出格式 1-指定...

    灵柩软件 可用于汉语分词处理

    支持文本、数字、日期、字符串等各种数据类型,多字段的高效搜索,支持AND/OR/NOT以及NEAR邻近等查询语法,支持维语、藏语、蒙语、阿拉伯、韩语等多种少数民族语言的检索。可以无缝地与现有文本处理系统与数据库...

Global site tag (gtag.js) - Google Analytics