首页 > 解决方案 > 按字典顺序排序数组

问题描述

我不知道为什么我的代码不起作用。我正在尝试按字典顺序对输入字符串的子字符串数组进行排序。然后得到最小和最大的元素。
例子:

输入
s= fares & k=2
子字符串数组将是= {fa,ar,re,es}
输出
ar
re

k子字符串的大小。

我尝试了带有 3 个元素(k=3)的子字符串的“helloworld”,但没有成功。

public static String getSmallestAndLargest(String s, int k) {
    String smallest = "";
    String largest = "";
    String[] str=new String[s.length()];

    for(int i=0;i<s.length()-k;i++){
        String holder=s.substring(i,i+k);
        str[i]=holder;
    }
    Arrays.sort(str); 

    smallest=str[0];
    largest=str[s.length()-1];


    return smallest + "\n" + largest;
}

标签: javasortingsubstring

解决方案


str 问题是示例的值的长度,str即 s=fares 和 k = 2 是

[fa, ar, re, null, null]

因此 Arrays.sort 抛出异常你也可以在同一个循环中找到最大值和最小值,没有单独的排序需要
我已经为相同的代码

public static void main(String[] args) throws Exception {
    System.out.println(getSmallestAndLargest("fares",2));
}

public static String getSmallestAndLargest(String s, int k) {
    String substring = s.substring(0, k);
    String smallest = substring;
    String largest = "";
    while(s.length()>=k) {
        String temp  = s.substring(0, k);
        System.out.println(temp);
        smallest = smallest.compareTo(temp)<0?smallest:temp;
        largest = largest.compareTo(temp)>0?largest:temp;
        s= s.substring(1,s.length());
    }
    System.out.println("***************** Result");
    return smallest+"\n"+largest;
}

输出

fa
ar
re
es
***************** Result
ar
re

K = 3

far
are
res
***************** Result
are
res

推荐阅读