您的位置:首页 > 其它

获取一字符串中,每一个字符出现的次数。

2013-11-01 20:16 531 查看
题目:已知字符串"fdgavcbsacdfs", 获取该字符串中,每一个字母出现的次数。

要求打印结果是:a(2)b(1)...;

1.程序分析: 对于结果的分析发现,字母和数字之间存在这映射关系,而且这种关系很多,很多就需要存储,而能存储映射关系的容器有数组和Map结合。关系和方式是无序的,故选择Map,又发现保持着顺序a,b,c.....,所以这个集合最终应该存储的是字母和次数的存储关系。

1、因为操作的是字符,所以先将字符串转换为字符数组。2、遍历字符数组,用每一个字母作为键去查找map集合,如果该字母键不存在,则将该字母作为键和1作为值存进map集合。如果该字母键存在,则把该字母对应值+1,然后以该字母为键,重新存入map集合,键会覆盖,遍历结束,则map集合就记录了所有字母出现的次数。

package temp;

import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;

public class MapTest {

public static void main(String[] args) {
String s="fdgavcbsacdfs";
chaCount(s);
}

public static void chaCount(String s) {
char []arr=s.toCharArray();
int value=0;
Map<Character,Integer> map=new TreeMap<Character, Integer>();
for (int i = 0; i < arr.length; i++) {
if(map.get(arr[i])==null)
map.put(arr[i], value+1);
else
map.put(arr[i], ++value);
}

StringBuilder ab=new StringBuilder();
for(Iterator<Character> it=map.keySet().iterator();it.hasNext();)
{
Character ch=it.next();
Integer in=map.get(ch);
ab.append(ch+"("+in+")");
}

System.out.println(ab);
}

}


运行结果:
a(1)b(1)c(2)d(3)f(4)g(1)s(5)v(1)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: