java - 按字典顺序排序数组
问题描述
我不知道为什么我的代码不起作用。我正在尝试按字典顺序对输入字符串的子字符串数组进行排序。然后得到最小和最大的元素。
例子:
输入:
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;
}
解决方案
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
推荐阅读
- html - 如何使用 flex-grow 在容器中添加可滚动导航
- or-tools - 约束多个 IntVarArray
- java - Spring数据mongodb查找多个字段
- node.js - 事件循环阶段如何处理请求?
- angular - 在声明期间内联初始化变量与使用 TS 在 Angular 中的构造函数中初始化变量
- cakephp - 表格十进制字段的数据库中记录不正确
- .net-core - 我可以删除或移动文件夹 NuGetFallbackFolder 吗?
- reactjs - React-d3 findComponentRoot(..., .0.0.1.0.0.1.0.$/=13.0.$faux-dom-0): 找不到元素
- html - 在进度条背景上居中进度值
- java - 由于多个 java 错误,无法编译自动生成的 JOOQ 代码