【发布时间】:2022-01-25 11:44:42
【问题描述】:
尝试通过用数字替换重复字符来“压缩”字符串(例如,字符串 aabcccccaaa 将变为 a2blc5a3)。我尝试使用 Linked HashMap 来解决问题,因为需要保留输入顺序,但我创建的计数器似乎没有正确递增。任何见解将不胜感激。
public class StringCompression {
public static void main(String[] args) {
String s = "aabcccccaaa";
System.out.println(compString(s));
}
public static String compString(String str) {
LinkedHashMap <Character, Integer> alphabet = new LinkedHashMap<>();
StringBuilder strbdr = new StringBuilder();
for(int i = 0; i < str.length(); i++) {
if(alphabet.containsKey(str.charAt(i))) {
alphabet.put(str.charAt(i), alphabet.get(str.charAt(i))+1);
}
alphabet.put(str.charAt(i), 1);
}
// System.out.println(alphabet.entrySet());
for(var entry : alphabet.entrySet()) {
strbdr.append(entry.getKey());
strbdr.append(entry.getValue());
}
return strbdr.toString();
}
}
【问题讨论】:
标签: java string linkedhashmap