日期:2014-05-20  浏览次数:20548 次

今天面试了,关于字符串截取的
有一个数组,String [] a={ads,awww,fdgfdf,fvdsfc,hyjutfrdf},
题目要求,例如,数组a={ads}中,在a-z共二十六个字母中,字母a出现了1次,d出现了1次,s出现了1次,其他字母出现了0次,求出在以上数组中,打印出各个字母都出现了多少次。
呵呵,求高人给大家解答分享下。

------解决方案--------------------
利用ascii码值的范围很小[0, 255],直接定义一个大小为256的数组,这样解决办法可以简化很多。
public class Hello {
    public static void main(String[] args) {
        String [] a = {"ads", "awww", "fdgfdf", "fvdsfc", "hyjutfrdf"};
        int[] frequence = new int[256];

        for (String str : a) {
            for (int i = 0; i < str.length(); ++i) {
                frequence[str.charAt(i)]++;
            }
        }

        for (int i = 0; i < frequence.length; ++i) {
            if (frequence[i] != 0) {
                System.out.printf("%s: %d\n", (char)i, frequence[i]);
            }
        }
    }
}

a: 2
c: 1
d: 5
f: 7
g: 1
h: 1
j: 1
r: 1
s: 2
t: 1
u: 1
v: 1
w: 3
y: 1

------解决方案--------------------
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;

public class StringCount
{
public static void main(String[] args)
{

String[] arr ={"ads","awww","fdgfdf","fdgfdf","fdgfdf"};