Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按字母顺序对字符串中的字符进行排序_Java_Arrays_String_Sorting_Char - Fatal编程技术网

Java 按字母顺序对字符串中的字符进行排序

Java 按字母顺序对字符串中的字符进行排序,java,arrays,string,sorting,char,Java,Arrays,String,Sorting,Char,smb能否解释按字母顺序对字符串的字符进行排序的过程?例如,如果我有字符串“hello”,那么输出应该是“ehllo”,但我的代码做得不对 public static void main(String[] args) { String result = ""; Scanner kbd = new Scanner(System.in); String input = kbd.nextLine(); for(int i = 1

smb能否解释按字母顺序对
字符串的字符进行排序的过程?例如,如果我有
字符串“hello”
,那么输出应该是
“ehllo”
,但我的代码做得不对

public static void main(String[] args)
    {
        String result = "";
        Scanner kbd = new Scanner(System.in);
        String input = kbd.nextLine();

        for(int i = 1; i < input.length(); i++)
        {
            if(input.charAt(i-1) < input.charAt(i))
                result += input.charAt(i-1);
            //else 
            //  result += input.charAt(i);
        }
        System.out.println(result);
    }


}
publicstaticvoidmain(字符串[]args)
{
字符串结果=”;
扫描仪kbd=新扫描仪(System.in);
字符串输入=kbd.nextLine();
对于(int i=1;i
您可以执行以下操作-

1。将字符串转换为
char[]
array。
2.使用
Arrays.sort()
对字符数组进行排序

代码片段:

String input = "hello";
char[] charArray = input.toCharArray();
Arrays.sort(charArray);
String sortedString = new String(charArray);
System.out.println(sortedString);  
或者,如果您想使用for循环对数组进行排序(出于学习目的),您可以使用(但我认为第一个是最好的选择)以下代码片段-

input="hello";
char[] charArray = input.toCharArray();
length = charArray.length();

for(int i=0;i<length;i++){
   for(int j=i+1;j<length;j++){
      if (charArray[j] < charArray[i]) {
          char temp = charArray[i];
          charArray[i]=arr[j];
          charArray[j]=temp;
      }
   }
}
input=“hello”;
char[]charArray=input.toCharArray();
长度=charArray.length();

for(int i=0;i在你的for中,颊部从1开始,应该从0开始

for(int i = 0; i < input.length(); i++){...}
for(inti=0;i
作为任务排序的下限为O(n*logn),n是要排序的元素数。这意味着,如果使用单循环进行简单操作,则不能保证正确排序。 排序中的一个关键元素是决定排序依据的是什么。在本例中,它是按字母顺序排列的,如果将每个字符转换为字符,则等同于按升序排序,因为字符实际上只是机器映射到字符的一个数字,带有“A”<“b”。唯一需要注意的是混合大小写,因为“z”<“A”。要获得在这一轮中,您可以使用
str.tolower()
。我建议您也查找一些基本的排序算法。

过程:
  • 首先,将字符串转换为字符数组

  • 然后对字符数组进行排序

  • 将字符数组转换为字符串

  • 打印字符串


  • 代码段:
    您可以使用流对Java 8中的字符串进行排序,如下所示:

    String sortedString =
        Stream.of("hello".split(""))
        .sorted()
        .collect(Collectors.joining());
    

    如果先将字符放入数组,则可以使用数组进行排序

    Character[] chars = new Character[str.length()];
    
    for (int i = 0; i < chars.length; i++)
        chars[i] = str.charAt(i);
    
    // sort the array
    Arrays.sort(chars, new Comparator<Character>() {
        public int compare(Character c1, Character c2) {
            int cmp = Character.compare(
                Character.toLowerCase(c1.charValue()),
                Character.toLowerCase(c2.charValue())
            );
            if (cmp != 0) return cmp;
            return Character.compare(c1.charValue(), c2.charValue());
        }
    });
    
    Character[]chars=新字符[str.length()];
    for(int i=0;i

    现在使用
    StringBuilder
    最基本的暴力方法,使用两个for循环,从中构建一个字符串: 它对字符串进行排序,但代价是O(n^2)时间复杂度

    public void stringSort(String str){
            char[] token = str.toCharArray();
            for(int i = 0; i<token.length; i++){
                for(int j = i+1; j<token.length; j++){
                    if(token[i] > token[j]){
                        char temp = token[i];
                        token[i] = token[j];
                        token[j] = temp;
                    }
                }
            }
            System.out.print(Arrays.toString(token));
        }
    
    publicsvoidstringsort(stringstr){
    char[]token=str.toCharArray();
    
    对于(int i=0;i公共类排序{

    public static void main(String[] args) {
        String str = "Hello World";
        char[] arr;
        List<Character> L = new ArrayList<Character>();
        for (int i = 0; i < str.length(); i++) {
            arr = str.toLowerCase().toCharArray();
            L.add(arr[i]);
    
        }
        Collections.sort(L);
        str = L.toString();
        str = str.replaceAll("\\[", "").replaceAll("\\]", "")
                .replaceAll("[,]", "").replaceAll(" ", "");
        System.out.println(str);
    
    }
    
    publicstaticvoidmain(字符串[]args){
    String str=“Hello World”;
    char[]arr;
    列表L=新的ArrayList();
    对于(int i=0;i
    if语句中的比较,您能解释一下您认为它在做什么吗?不要说您的代码“做错了”,您应该编辑您的问题,以给出您遇到的具体问题。例如,您可以给出一个示例输入、预期输出和实际输出。我认为您只需要看一看:虽然此代码可能会回答问题,但提供有关如何和/或为什么解决问题的附加上下文将提高e答案的长期价值。
    public static void main(String[] args) {
        String str = "Hello World";
        char[] arr;
        List<Character> L = new ArrayList<Character>();
        for (int i = 0; i < str.length(); i++) {
            arr = str.toLowerCase().toCharArray();
            L.add(arr[i]);
    
        }
        Collections.sort(L);
        str = L.toString();
        str = str.replaceAll("\\[", "").replaceAll("\\]", "")
                .replaceAll("[,]", "").replaceAll(" ", "");
        System.out.println(str);
    
    }