我想获得字符串中每个唯一字符的平均值。我在这里有一个例子,因为它更容易说明。
字符串:
The big brown fox
每个字符的平均值,包括空格:
T = 1/17 = .058
h = 1/17 = .058
e = 1/17 = .058
' '= 3/17 = .176
b = 2/17 = .117
i = 1/17 = .058
g = 1/17 = .058
r = 1/17 = .058
o = 2/17 = .117
w = 1/17 = .058
n = 1/17 = .058
f = 1/17 = .058
x = 1/17 = .058
到目前为止,我的所有尝试都失败了,认为我的大脑此刻不起作用。我该如何编码呢?任何帮助或输入将不胜感激。
我将此代码作为解决方案。当我在堆栈中复制粘贴我的代码时,它就来找我了。我希望这不是重新发布的,因为几分钟前我刚回答了同样的事情,但它没有显示出来。
Map<String, Integer> storeCharCount = new HashMap<String, Integer>();
String a = "The big brown fox";
for (int x=0; x<a.length(); x++){
char getChar = a.charAt(x);
String convGetChar = Character.toString(getChar);
Integer countChar = storeCharCount.get(convGetChar);
storeCharCount.put(convGetChar, (countChar==null?countChar=1:countChar+1));
}
System.out.println("Map: "+ storeCharCount);
double RelFrequency = 0;
for (Map.Entry<String, Integer> getValue: storeCharCount.entrySet()){
RelFrequency = (double)(getValue.getValue())/(a.length());
System.out.println("Character "+getValue.getKey() +" Relative Frequency: "+RelFrequency);
}
这是输出
Map: {f=1, g=1, =3, e=1, b=2, n=1, o=2, h=1, i=1, w=1, T=1, r=1, x=1}
Character f Relative Frequency: 0.058823529411764705
Character g Relative Frequency: 0.058823529411764705
Character Relative Frequency: 0.17647058823529413
Character e Relative Frequency: 0.058823529411764705
Character b Relative Frequency: 0.11764705882352941
Character n Relative Frequency: 0.058823529411764705
Character o Relative Frequency: 0.11764705882352941
Character h Relative Frequency: 0.058823529411764705
Character i Relative Frequency: 0.058823529411764705
Character w Relative Frequency: 0.058823529411764705
Character T Relative Frequency: 0.058823529411764705
Character r Relative Frequency: 0.058823529411764705
Character x Relative Frequency: 0.058823529411764705
答案 0 :(得分:1)
这是我的建议。首先迭代字符串中的每个字符,如果找到则更新频率,否则添加1.然后再次迭代以打印结果:
String s = "The big brown fox";
Map<Character, Float> m = new TreeMap<Character, Float>();
for (char c : s.toCharArray()) {
if (m.containsKey(c))
m.put(c, m.get(c) + 1);
else
m.put(c, 1f);
}
for (char c : s.toCharArray()) {
float freq = m.get(c) / s.length();
System.out.println(c + " " + freq);
}
答案 1 :(得分:0)
我认为这不是最好的方法,但你可以计算每个字母[a-z] [A-Z]并删除每个“”然后你计算=字母数/所有字母。
我希望它有所帮助。