写一个Java程序 用acm模式 输入一个小写字母组成的字符串 交换两个相邻字母 使得操作后字典序尽可能大
时间: 2023-05-11 14:04:16 浏览: 71
以下是Java程序的代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
char[] arr = str.toCharArray();
int len = arr.length;
int maxIndex = -1;
for (int i = len - 1; i > 0; i--) {
if (arr[i] > arr[i - 1]) {
maxIndex = i - 1;
break;
}
}
if (maxIndex == -1) {
System.out.println("没有符合条件的交换");
return;
}
int swapIndex = -1;
for (int i = len - 1; i > maxIndex; i--) {
if (arr[i] > arr[maxIndex]) {
swapIndex = i;
break;
}
}
char temp = arr[maxIndex];
arr[maxIndex] = arr[swapIndex];
arr[swapIndex] = temp;
for (int i = maxIndex + 1, j = len - 1; i < j; i++, j--) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
System.out.println(new String(arr));
}
}
输入一个小写字母组成的字符串,程序会输出交换两个相邻字母后字典序尽可能大的字符串。如果没有符合条件的交换,则输出"没有符合条件的交换"。
例如,输入"dcba",程序会输出"dbca"。
注意,这个程序使用了acm模式,即使用Scanner类读取输入,而不是使用BufferedReader类。