【发布时间】:2018-04-04 15:55:25
【问题描述】:
所以我有一个java程序,它从用户输入中获取一个字符串,对其进行排序,找到频率,并按字母顺序打印它。我唯一的问题是它还会打印重复项。因此,如果字母 d 在一个字符串中出现 3 次,它会打印如下:
d 频率:3
d 频率:3
d 频率:3
对于这个项目,我不允许使用任何内置 java 排序功能(包括哈希图)。关于如何阻止这种情况的任何建议?这是我的代码。谢谢!
char[] charArray = userSort.toCharArray();
char tempChar;
for (int i = 0; i < charArray.length; i++) {
for (int j = 0; j < charArray.length; j++) {
if (charArray[i] < charArray[j]) {
tempChar = charArray[i];
charArray[i] = charArray[j];
charArray[j] = tempChar;
}
}
}
String sortedString = "";
for (int i = 0; i < charArray.length; i++) {
userSort += charArray[i];
}
System.out.println(sortedString + "\n");
int counter;
sortedString = "";
for (int i = 0; i < charArray.length; i++) {
counter = 0;
for (int j = 0; j < charArray.length; j++) {
if (charArray[i] == charArray[j]) {
counter++;
}
}
if (!sortedString.contains("Char: " + charArray[i])) {
if (sortedString.equals("")) {
sortedString += " " + charArray[i] + " freq: " + counter + "\n";
} else {
sortedString += " " + charArray[i] + " freq: " + counter + "\n";
}
}
}
System.out.println(sortedString);
【问题讨论】:
-
如果您不想重复数据,请使用 Set
-
如果要计算频率,请使用 Hashmap
-
使用我两天前给你的解决方案,即代码最后一段中的located here。
-
提示:桶排序
-
Hashmap 不是排序算法
标签: java arrays sorting duplicates