1

我知道有一种简单的方法可以做到这一点......话虽如此,我正在尝试使用选择排序和 stringBuilder 类对字符串进行排序,但我得到了一个无限循环。如果有人可以提供帮助,不胜感激。包 Chapter9Str; 导入 java.util.*;

public class SortedString {

    public static void main(String[] args) {
        String input = "cabed";

        System.out.println(sort(input));
    }

    public static String sort(String str) {     
        StringBuilder sb = new StringBuilder(str);

        for(int i=0; i<sb.length()-1; i++) {
            char tmp;
            for(int j=i+1; j<sb.length(); j++) {
                if(sb.charAt(j) < sb.charAt(i)) {
                    tmp = sb.charAt(i);
                    sb.insert(i, sb.charAt(j));
                    sb.insert(j,  tmp);
                }
            }
        }
        return sb.toString();       

    }

}
4

1 回答 1

3

每次交换时,实际上都是在增加字符串的长度。

            if(sb.charAt(j) < sb.charAt(i)) {
                tmp = sb.charAt(i);
                sb.insert(i, sb.charAt(j));
                sb.insert(j,  tmp);
            }

Insert 在指定位置腾出空间,而不是替换那里的字符。例如,如果你从 开始acbd,在你点击那段代码之后,你会留下abccbd,而不是abcd

我认为您正在寻找的是setCharAt方法。

于 2012-12-14T00:21:36.860 回答