代运营公司是做什么的,拟定网站优化方案,国内自建的海淘网站,wps可以做网站吗题目 题目描述: 给定一个字符串s#xff0c;最多只能进行一次变换#xff0c;返回变换后能得到的最小字符串(按照字典序进行比较)。变换规则:交换字符串中任意两个不同位置的字符。 输入描述: —串小写字母组成的字符串s 输出描述: 按照要求进行变换得到的最小字符串 备注: s…题目 题目描述: 给定一个字符串s最多只能进行一次变换返回变换后能得到的最小字符串(按照字典序进行比较)。变换规则:交换字符串中任意两个不同位置的字符。 输入描述: —串小写字母组成的字符串s 输出描述: 按照要求进行变换得到的最小字符串 备注: s是都是小写字符组成 1s.length1000 示例1 输入: abcdef 输出: abcdef 说明: abcdef已经是最小字符串不需要交换 示例2 输入∶ bcdefa 输出: acdefb 说明: a和b进行位置交换可以得到最小字符串 思路 将字符串中的字符按字典序排序需要携带索引信息所以list中可以考虑存放int[]的形式得到list 遍历str字符串逐位和list对比如果第i位不一样那么此时需要交换的位置就是i和list.get(i)中存放的索引位置。 输出交换位置后的字符串即可 题解
package hwod;import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;public class TheMinStr {public static void main(String[] args) {Scanner sc new Scanner(System.in);String str sc.nextLine();System.out.println(theMinStr(str));}private static String theMinStr(String str) {Listint[] list new ArrayList();for (int i 0; i str.length(); i) {list.add(new int[]{str.charAt(i), i});}list.sort((o1, o2) - {if(o1[0]!o2[0]) return o1[0] - o2[0];return o1[1] - o2[1];});for (int i 0; i str.length(); i) {if (str.charAt(i) ! list.get(i)[0]) {return swap(str, i, list.get(i)[1]);}}return str;}private static String swap(String str, int i, int j) {char[] chars str.toCharArray();char t chars[i];chars[i] chars[j];chars[j] t;return String.valueOf(chars);}
}
推荐
如果你对本系列的其他题目感兴趣可以参考华为OD机试真题及题解JAVA查看当前专栏更新的所有题目。