gpt4 book ai didi

java - 如何按字典顺序排列子串

转载 作者:行者123 更新时间:2023-11-30 10:04:48 25 4
gpt4 key购买 nike

我想按字典顺序对长度为“k”的字符串“s”的子串进行排序

我尝试先使用 comapareTo 函数按字典顺序对字符串的字符进行排序,然后尝试打印第一个和最后一个子字符串

public static String getSmallestAndLargest(String s, int k) {
String smallest = "";
String largest = "";
char ch1,ch2,temp;
int i,j,res;

// 'smallest' must be the lexicographically smallest substring of length 'k'
// 'largest' must be the lexicographically largest substring of length 'k'
for(i=0;i<s.length();i++)
{
ch1=s.charAt(i);
for(j=i+1;j<=s.length();j++)
{
ch2=s.charAt(j);
res=ch2.compareTo(ch1);
if(res<0)
{
temp=ch2;
ch2=ch1;
ch1=temp;
}
}
}
smallest=s.substring(0,k);
largest=s.substring(s.length()-k);
return smallest + "\n" + largest;
}

预期输出:将相应的字典顺序最小和最大子字符串作为单个换行符分隔的字符串返回。

input: welcometojava
3

expected output:ava
wel

最佳答案

您的想法是对的,但您正在尝试比较单个字符。相反,在每次迭代中,您应该取一个长度为 k 的子字符串,并将其与当前的“最小”和“最大”字符串进行比较:

public static String getSmallestAndLargest(String s, int k) {
String curr = s.substring(0, k);
String smallest = curr;
String largest = curr;
for (int i = 1; i < s.length() - k + 1; ++i) {
curr = s.substring(i, i + k);
if (smallest.compareTo(curr) > 0) {
smallest = curr;
}
if (largest.compareTo(curr) < 0) {
largest = curr;
}
}
return smallest + "\n" + largest;
}

关于java - 如何按字典顺序排列子串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55664444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com