gpt4 book ai didi

java - 如何对排列进行排序

转载 作者:行者123 更新时间:2023-12-02 01:47:10 25 4
gpt4 key购买 nike

我已经编译了我的代码并且它工作正常,我目前正在尝试添加一个排序方法以使我的排列具有降序排序功能。

我尝试过很多数组排序函数。我不知道需要更改什么来配置排序方法。

import java.util.*;

public class Permutation {



public static void main(String[] args)

{
String str;

Scanner in = new Scanner(System.in);
System.out.println("Enter details");
str = in.nextLine();
System.out.println("You entered " + str);

int n = str.length();
Permutation permutation = new Permutation();
permutation.permute(str, 0, n - 1);

}

/**
* permutation function
* @param str string to calculate permutation for
* @param l starting index
* @param r end index
*/
private void permute(String str, int l, int r)
{
if (l == r)
System.out.println(str);
else {
for (int i = l; i <= r; i++) {
str = swap(str, l, i);
permute(str, l + 1, r);
//str = swap(str, l, i);

}
}
}

/**
* Swap Characters at position
* @param a string value
* @param i position 1
* @param j position 2
* @return swapped string
*/
public String swap(String a, int i, int j)
{
char temp;
char charArray[] = a.toCharArray();
temp = charArray[i];
charArray[i] = charArray[j];
charArray[j] = temp;
return String.valueOf(charArray);

}
}

我的程序运行良好,我得到了结果。我只需要按降序格式对结果进行排序。我在完成此功能时遇到问题。

最佳答案

我认为你有两种方法可以解决你的问题。

  1. 您不是立即打印出排列,而是创建一个数组 String[] permutatedStringspermutate() 的开头并将排列后的字符串添加到您现在打印的位置。在该方法的最后,您执行 Arrays.sort(permutatedStrings, Comparator<String>.comparingInt((String str) -> Integer.parseInt(str) * -1);
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

public class Permutation {

public static void main(String[] args)

{
String str;

Scanner in = new Scanner(System.in);
System.out.println("Enter details");
str = in.nextLine();
in.close();
System.out.println("You entered " + str);

str = str.replaceAll("\\D+", "");
// Eliminating excess character, leaving integers

try {
Integer.parseInt(str);
} catch (NumberFormatException e) {
System.out.println("No Valid Numbers");
}
// Error exception is thrown where there is no integer present

int n = str.length();
Permutation permutation = new Permutation();
ArrayList<String> permutatedStrings = new ArrayList<>();
ArrayList<String> resultList = permutation.permute(permutatedStrings, str, 0, n - 1);
Object[] result = resultList.toArray();
Arrays.sort(result, Comparator.comparingInt((Object string) -> Integer.parseInt((String) string) * -1));

for (Object object : result) {
System.out.println((String) object);
}

}

/**
* permutation function
*
* @param str string to calculate permutation for
* @param l starting index
* @param r end index
*/
private ArrayList<String> permute(ArrayList<String> permutatedStrings, String str, int l, int r) {
if (l == r) {
permutatedStrings.add(str);
} else {
for (int i = l; i <= r; i++) {
str = swap(str, l, i);
permute(permutatedStrings, str, l + 1, r);
// str = swap(str, l, i);

}
}
return permutatedStrings;
}

/**
* Swap Characters at position
*
* @param a string value
* @param i position 1
* @param j position 2
* @return swapped string
*/
public String swap(String a, int i, int j) {
char temp;
char charArray[] = a.toCharArray();
temp = charArray[i];
charArray[i] = charArray[j];
charArray[j] = temp;
return String.valueOf(charArray);

}
}
  • 第二种方法是按顺序创建排列。首先,对数字进行排序。然后你继续体育运动。根据Project Nayuki .
  • 关于java - 如何对排列进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57448417/

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