Java 按字母顺序对字符串中的字符进行排序
smb能否解释按字母顺序对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
字符串的字符进行排序的过程?例如,如果我有字符串“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);
}