大家好,我是晴天学长,这是一道常见的回文串的判断的变形题!💪💪💪
1 )字典序最小回文串
2) .算法思路
- 双指针
- 判断一次,做一次修改
- 是回文串,直接输出
3).代码示例
class Solution {
static int x;
public String makeSmallestPalindrome(String s) {
while (!ishuiwen(s)){
s=tranform(s);
}
return s;
}
//判断是否是回文串
public static boolean ishuiwen(String s ){
int n =s.length()/2;
for (int i = 0; i < n; i++) {
if (s.charAt(i)!=s.charAt(s.length()-i-1)){
x=i;
return false;
}
}
return true;
}
//做一次修改
private static String tranform(String s){
char a = s.charAt(x);
char b = s.charAt(s.length()-x-1);
StringBuilder temp = new StringBuilder();
if (a<b){
for (int i = 0; i < s.length(); i++) {
if (i==s.length()-x-1){
temp.append(a);
}
else {
temp.append(s.charAt(i));
}
}
}
else {
for (int i = 0; i < s.length(); i++) {
if (i==x){
temp.append(b);
}
else {
temp.append(s.charAt(i));
}
}
}
return temp.toString();
}
}
4).总结
- 回文串的判断
- 注意回文串双指针的界线