这是我的代码,但我知道这不对。我为这么简单的任务写了很多代码。
示例输入是:
欢迎
示例输出为:
COM
ELC
LCO
青梅
WEL
应该打印:
你的第一个字符串是' com'
和
你的最后一个字符串是' wel'
代码:
import java.io.*;
import java.util.*;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
int k = sc.nextInt();
int k1 = k;
int j = 0;
int t = str.length();
String [] s = new String [1000];
for (int i = t, a = 0; i >= k; i--, a++) {
s[a] = str.substring(j, k1);
j++;
k1++;
}
String[] s1 = new String[j];
for (int i = 0 ; i < j; i++) {
s1[i] = s[i];
}
for (int y = 0; y < j; y++) {
for (int z = y + 1; z < j; z++) {
if(s1[z].compareTo(s1[y]) < 0) {
String temp = s1[z];
s1[z] = s1[y];
s1[y] = temp;
}
}
}
System.out.println(s1[0]);
System.out.println(s1[1]);
}
}
注意:我分裂了我的字符串,但是我无法按字母顺序排列字符串,并且觉得我使用了很多数组。有更好的方法吗?
答案 0 :(得分:0)
只需使用
即可轻松对String []数组进行排序 Arrays.sort(s);
这将按默认顺序对字符串进行排序。如果您需要任何其他类型的订单,您可以将比较器作为第二个参数传递。
你可以通过获得s [0]和s [s.length-1]
获得第一个和最后一个答案 1 :(得分:0)
我快速实施了您的要求。它可能不是你正在寻找的,但它应该让你开始。 :)
因此,我使用ArrayList来获取子字符串,并使用Collections库为我进行排序。这只是解决问题的众多方法之一,顺便说一下。输入字的大小可能不同,所以我觉得列表适合这种情况。
String s = "welcome";
List<String> words = new ArrayList<String>();
for (int i = 0; i < s.length() - 2; i++) {
String chunk = s.charAt(i) + "" + s.charAt(i + 1) + ""
+ s.charAt(i + 2);
words.add(chunk);
System.out.println(chunk);
}
Collections.sort(words);
System.out.println(words.toString());
如果您有任何问题或我在代码中犯了错误,请随时告诉我。
祝你好运!答案 2 :(得分:0)
您的代码的实际问题是分裂。排序将有效。如果j
值1
和k1
值3
,那么wel
子字符串即将到来。下一个循环,(j
和k1
增加1
)j
值2
和k1
值4
然后elc
子字符串即将到来,等等。
所以,而不是
String [] s = new String [1000];
for (int i = t, a = 0; i >= k; i--, a++) {
s[a] = str.substring(j, k1);
j++;
k1++;
}
使用
int k = sc.nextInt();
String [] s = new String [(str.length()/3)+1] ;
for ( int i = 0,a = 0; i<(str.length()-k); i+=k,a++)
{
s[a] = str.substring(i,(i+k));
System.out.println(s[a]);
}
s[s.length-1]=str.substring((str.length()-k),str.length());//to add remaining values
Arrays.sort(s);//sorting alphabatically
for(int i = 0; i < s.length; i++)
System.out.println(s[i]);
}
i
值将增加3
。在for循环中(i+=k)
k=3
。
<强>输出:强>
amp
com
e s
ple
wel
答案 3 :(得分:0)
你可以
使用框架排序
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
int k = sc.nextInt();
List<String> cutStrings = new ArrayList<String>();
for (int i = 0; i < str.length() - k; i++) {
cutStrings.add(str.substring(i, i + k));
}
Collections.sort(cutStrings);
System.out.println(cutStrings.get(0));
System.out.println(cutStrings.get(cutStrings.size()-1));
}