黑马程序员技术交流社区
标题:
自己练了一个小程序
[打印本页]
作者:
xinleili3
时间:
2015-4-8 02:20
标题:
自己练了一个小程序
/*
需求:获取该字符串中的字母出现的次数,如:"sjokafjoilnvoaxllvkasjdfns";希望打印的结果是:a(3)c(0).....
通过结果发现,每个字母都有对应的次数,说明字母和次数之间有映射关系。而且字母是有顺序的。
想到:TreeMap集合会给键自动排序,可以把字母存到键上;
而且,每一次添加如果相同的键会将值更新,所以定义一个计数器每次取出原有的值然后+1;
思路:1、将字符串转换为字符数组
2、定义一个TreeMap集合,用于存储字母和字母出现的次数
3、用数组去遍历集合,如果集合中有该字母则次数加1,如果集合中没有则存入
4、将TreeMap集合中的元素转换为字符串
*/
import java.util.*;
class TreeMapTest
{
public static void main(String[] args)
{
String s ="dfeogjsdgr45djgidji24thfdljb;f[rg'";
System.out.println("s中各字母出现的次数:"+charCount(s));
}
public static String charCount(String s)
{
char[] c = s.toCharArray();
TreeMap<Character,Integer> tm = new TreeMap<Character,Integer>();
//int count = 0;
for(int x = 0;x<c.length;x++)
{
int count =0;
if(!((c[x]>='a'&&c[x]<='z')||(c[x]>='A'&&c[x]<='Z')))
continue;
Integer value = tm.get(c[x]);
if(value!=null)
count = value;
count++;
tm.put(c[x],count);
}
StringBuilder sb=new StringBuilder();
Iterator<Map.Entry<Character,Integer>> it = tm.entrySet().iterator();
while(it.hasNext())
{
Map.Entry<Character,Integer> me= it.next();
Character ch = me.getKey();
Integer i = me.getValue();
sb.append(ch+"("+i+")");
}
return sb.toString();
}
}
复制代码
作者:
守护星空
时间:
2015-4-8 12:01
可以 告诉我 这是什么程序吗?
作者:
cody
时间:
2015-4-8 20:42
感觉好厉害,请问LZ学了多久?学到哪了?
作者:
qq853636281
时间:
2015-4-8 20:48
觉得好牛B啊, 楼主是学了多久啊
作者:
邓士林
时间:
2015-4-8 20:50
赞一个,,
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2