我是Java新手。我的任务是在Java中按字母数量排序并使用StringBuilder而不使用Java集合。例如hhhheeeeelllo
它应该像这个eeeeehhhhlllo
并使用其他单词。我有这个例如hhhhhhheeeeeelllllllllo
控制台告诉我这个hhhhhheeeeeehlllllllllo
。我知道在C ++中必须有什么样的。但我尝试用Java重写它,什么都没有。请帮我。
我知道我必须使用这个循环例如
for(int i = 1; i<s.length(); i++) {
for(int j = s.length()-1; j>=i; j--) {
if(word[j-1] > word[j]) {
....
}
}
}
这是我的代码:
class StringBuilder {
public void sorting_stringBuilder(String s) {
int i,j;
//String r="";
//char c;
char temp;
java.lang.StringBuilder news = new java.lang.StringBuilder(s);
for(i=1; i<s.length(); i++) {
//c = news.charAt(i);
for(j=s.length() - 1; j >= i; j--) {
//c = news.charAt(i);
if((int) news.charAt(j-1) > (int) news.charAt(j)) {
//c = news.charAt(j);
temp = news.charAt(i);
news.setCharAt(i, news.charAt(j-1));
news.setCharAt(j-1, temp);
}
}
//r=r + c;
}
//System.out.println(r);
System.out.println("s is = "+news);
}
}
public class Laba3 {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
sb.sorting_stringBuilder("hhhhhhheeeeeelllllllllo");
}
}
答案 0 :(得分:0)
以下是我的表现:
Map
。Map
进行排序。StringBuilder
。有些事情(我只是在这里输入代码,所以可能会赢得甚至编译):
// Input string
String s = ... ;
Map<Character, AtomicInteger> countOfCharacters = new HashMap<>();
char[] characters = s.toCharArray();
// Count the characters
for (char c : character) {
countOfCharacters.computeIfAbsent(c, new AtomicInteger()).incrementAndGet();
}
// Get the char/count entries
Set<Map.Entry<Character, AtomicInteger>> countOfCharacterEntries =
countOfCharacters.entrySet();
// Convert to array
Map.Entry<Character, AtomicInteger> countOfCharacterArray =
new Map.Entry<Character, AtomicInteger>[countOfCharacterEntries.size()];
countOfCharacterEntries.toArray(countOfCharacterArray);
// Sort
Arrays.sort(countOfCharacterArray,
Comparator.comparing(entry -> entry.getValue().get());
// Output to a StringBuilder
StringBuilder sb = new StringBuilder();
for (Map.Entry<Character, AtomicInteger> countOfCharacter: countOfCharacterArray) {
char c = countOfCharacter.getKey().charValue();
int count = countOfCharacter.getValue().get();
for(int index = 0; index < count; index++) {
sb.append(c);
}
}
return sb.toString();
答案 1 :(得分:0)
最简单的线性方法(不使用任何库):
public static void main (String [] args) {
String input = "hhhheeeeelllo";// it should be like this eeeeehhhhlllo
final char[] alphabet = new char[256]; // assumming ascii characters only
for (int i = 0; i < input.length(); i++) {
alphabet[input.charAt(i)]++;
}
StringBuilder sorted = new StringBuilder(input.length());
for (int i = 0; i < alphabet.length; i++) {
char ch = (char) i;
for (int j = 0; j < alphabet[i]; j++) {
sorted.append(ch);
}
}
System.out.println(sorted.toString());
}
答案 2 :(得分:0)
如果您只需要在一个单词中写字:
String word = "hhhhhhheeeeeelllllllllo";
char[] chars = word.toCharArray();
Arrays.sort(chars); // sorted in ascending order
System.out.println(String.valueOf(chars));