赞
踩
活动地址:CSDN21天学习挑战赛
只要你想象得到,你就能做到;只要你能梦见,你就能实现。
…
**
1,题目
给定一个字符串s,最多只能进行一次变换,返回变换后能得到的最小字符串(按照字典序进行比较)。
变换规则:交换字符串中任意两个不同位置的字符。
2,输入
一串小写字母
3,输出
按要求转换的最小字符串
4,示例
输入:abcdef
输出:abcdef
说明:abcdef已经是最小字符串,不需要交换
输入:bcdefa
输出:acdefb
说明:a和b进行位置交换,可以得到最小字符串
5,学习知识点
仔细观察题目
6,学习遇到的问题
数组中两个字符替换,string没有合适的api需要转换为StringBuffer()
7,实操
@Test public void findMinStr() { String sc = "bcdefa"; char[] chars = sc.toCharArray(); Arrays.sort(chars); for (int i = 0; i < chars.length; i++) { if (sc.charAt(i) != chars[i]) { //TODO 交换数据 change(sc, sc.charAt(i), chars[i]); return; } } System.out.println(sc); } /** * 交换str中的 s1 和 s2 * * @param str 需要转换的数组 * @param s1 * @param s2 */ public void change(String str, char s1, char s2) { int index1 = str.indexOf(s1); int index2 = str.indexOf(s2); StringBuffer sb = new StringBuffer(str); sb.replace(index1, index1 + 1, String.valueOf(s2)); sb.replace(index2, index2 + 1, String.valueOf(s1)); System.out.println(sb); }
…
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。