【发布时间】:2015-10-02 15:24:03
【问题描述】:
我在面试中被问到了一个 java 问题。打印字符串中的不同字符并在每个字符下打印星号 (*),以显示该字符在该字符串中重复了多少次。
例如:我的字符串是“GOOGLE”,那么输出应该是
G O L E
* * * *
* *
我在 java 中尝试过,我能够创建一个 HashMap,它将字符和重复次数存储在字符串中。但是HashMap不是基于字符串的插入顺序。我也不知道下一步应该是什么。有人能帮我吗?提前致谢
public void myFunction(String str) {
int length = str.length();
HashMap<Character, Integer> hm = new HashMap<>();
for(int i=0;i<length;i++){
char ch = str.charAt(i);
if(hm.containsKey(ch)){
hm.put(ch, hm.get(ch)+1);
}
else {
hm.put(ch, 1);
}
}
System.out.println(hm);
}
OUTPUT - Enter a String:
GOOGLE
{E=1, G=2, L=1, O=2}
【问题讨论】:
-
你可以在这里找到答案:stackoverflow.com/questions/683518/… 特别检查 LinkedHashMap
-
这样简单的事情没有必要使用HashMap。这是相关的,但有点矫枉过正。一个包含 3 行代码的简单一维数组就可以了。
标签: java string collections hashmap