公众号建网站,无为县住房建设局网站首页,怎么提高网站转化率,国家建设公债拍卖网站Java解决字典序最小回文串
01 题目
给你一个由 小写英文字母 组成的字符串 s #xff0c;你可以对其执行一些操作。在一步操作中#xff0c;你可以用其他小写英文字母 替换 s 中的一个字符。
请你执行 尽可能少的操作 #xff0c;使 s 变成一个 回文串 。如果执行 最少 操…Java解决字典序最小回文串
01 题目
给你一个由 小写英文字母 组成的字符串 s 你可以对其执行一些操作。在一步操作中你可以用其他小写英文字母 替换 s 中的一个字符。
请你执行 尽可能少的操作 使 s 变成一个 回文串 。如果执行 最少 操作次数的方案不止一种则只需选取 字典序最小 的方案。
对于两个长度相同的字符串 a 和 b 在 a 和 b 出现不同的第一个位置如果该位置上 a 中对应字母比 b 中对应字母在字母表中出现顺序更早则认为 a 的字典序比 b 的字典序要小。
返回最终的回文字符串。
示例 1
输入s egcfe
输出efcfe
解释将 egcfe 变成回文字符串的最小操作次数为 1 修改 1 次得到的字典序最小回文字符串是 efcfe只需将 g 改为 f 。示例 2
输入s abcd
输出abba
解释将 abcd 变成回文字符串的最小操作次数为 2 修改 2 次得到的字典序最小回文字符串是 abba 。示例 3
输入s seven
输出neven
解释将 seven 变成回文字符串的最小操作次数为 1 修改 1 次得到的字典序最小回文字符串是 neven 。提示
1 s.length 1000s 仅由小写英文字母组成
02 知识点
char双指针string
03 我的题解
public class tanxi01 {public static void main(String[] args) {System.out.println(makeSmallestPalindrome(s));}public static String makeSmallestPalindrome(String s) {
// 先将字符串转化成字符数组通过循环首尾对比char[] charss.toCharArray();
// 从首和尾开始比较比较次数为字符串长度的一半即可int l0;int rs.length()-1;for (int i 0; i chars.length/2; i) {if (chars[l]chars[r]) {chars[r]chars[l];}else if (chars[l]chars[r]) {chars[l]chars[r];}
// 每次判断后就移动指针l;r--;}
// 把字符数组转化会字符串String rsString.valueOf(chars);return rs;}
}