题目描述
思路分析
0+1+2+3+········+13=91,而0+1+2+3+········+13+14=105。
让下标为j的字符提到最前,正好达到100次交换,这样也满足了最小字典序,也可以验证一下。
代码实现
package TEST;public class Main {public static void main(String[] args) {String str="ojnmlkihgfedcba";String str1="jonmlkihgfedcba";// {9,14,13,12,11,10,8,7,6,5,4,3,2,1,0}数字每移动一位减少一次char[] ch = str.toCharArray();if (f(str)==100){System.out.println(str);}if (f(str1)==100){System.out.println(str);}}public static int f(String str){int sum=0;char[] arr=str.toCharArray();for(int i=0;i<arr.length-1;i++){for (int j = 0; j < arr.length - 1 - i; j++) {if(arr[j]>arr[j+1]){char temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;sum++;}}}return sum;}}
答案
jonmlkihgfedcba