当前位置: 代码迷 >> J2SE >> java算法题解决思路
  详细解决方案

java算法题解决思路

热度:8048   发布时间:2013-02-25 21:54:01.0
java算法题
获取该字符串中每一个字母出现的个数
   “GZITCASTADVANCEDTRAININGJAVASEJAVAEE ANDROID”
我在网上找到的代码是这样的,但因为我没有学过集合类,所以看不懂,希望大家能给我详细解析一下
package itcast.Exam;

import java.security.KeyStore.Entry;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;

/*
 * 6、获取该字符串中每一个字母出现的个数(10)。
 * “GZITCASTADVANCEDTRAININGJAVASEJAVAEE ANDROID”
 * 
 * 这题因为在基础方面的集合类学习的不是很深入所以感觉不是很懂!
 *  还有待继续学习!
 */
public class Exam6 {

/**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "GZITCASTADVANCEDTRAININGJAVASEJAVAEE ANDROID";
System.out.println("每个字符串出现的个数如下:");
System.out.println(strCount(str));
}

public static String strCount(String str){
char[] ch = str.toCharArray();
Map<Character, Integer> map = new TreeMap<Character, Integer>();

for (int i = 0; i < ch.length; i++) {
Integer value = map.get(ch[i]);
int count = 1;
if (value != null) {
count = value + 1;
}
map.put(ch[i], count);
}
return toNewString(map);
}

public static String toNewString(Map<Character, Integer> map){
StringBuilder sBuilder = new StringBuilder();
Iterator<java.util.Map.Entry<Character, Integer>> iterator = map.entrySet().iterator();

while (iterator.hasNext()) {
java.util.Map.Entry<Character, Integer> entry = iterator.next();
char ch1 = entry.getKey();
int value = entry.getValue();
sBuilder.append(ch1+"{"+value+"}"+" ");
}
return sBuilder.toString();
}
}
java character iterator string
前天刚学了Map,晚上回去把这段代码试一下。 我突然发现CSDN的表情很酷啊,呵呵顶楼上,,,如果全是大(小)写字母可以用数组。
Map<K,V>是通用解法
K:键,V:值Map是一个集合
对应一个主键和一个值
这个题中的map
主键为这个字母,值为次数。
就这些。
如果看不懂真的说明你java还学得比较浅。
继续努力吧。其实代码很简单,而且你也分析出原因了。你不会集合类。。
推荐你看一下Map,然后就能明白代码的意思了。最好的做法其实是用数组

索引代表字母,值标记个数。
反正也就26个字母。
引用:
最好的做法其实是用数组

索引代表字母,值标记个数。
反正也就26个字母。

正解集合 ,是java基础中很重要的一部分,lz去看看吧
  相关解决方案