564. Encontre o palíndromo mais próximo\textcolor{red}{564. Encontre o palíndromo mais próximo}5 6 4. Encontre o número palíndromo mais próximo _
Dada uma string representando um inteiro n
, retorne o inteiro palíndromo mais próximo a ele (sem incluir ele mesmo). Se houver mais de um, devolva o menor.
"Mais próximo" é definido como o menor valor absoluto da diferença entre dois números inteiros .
class Solution {
public String nearestPalindromic(String n) {
Long m=Long.valueOf(n);
if(m<=10){
return String.valueOf(m-1);
}
long min=Long.MAX_VALUE;
//100 -test 99
long testNumber=(long)Math.pow(10,n.length()-1)-1;
long s=testNumber-m;
if(Math.abs(s)<Math.abs(min)){
min=s;
}
testNumber=(long)Math.pow(10,n.length())+1;
s=testNumber-m;
if(Math.abs(s)<Math.abs(min)){
min=s;
}
int leftN=(n.length()+1)/2;
long left=Long.valueOf(n.substring(0,leftN));
for(int i=-1;i<=1;i++){
long midLeft=left+i;
if(midLeft==0){
midLeft=9;
}
long midRight=0;
int countleftN=0;
while(midLeft!=0){
countleftN++;
midRight=midRight*10+midLeft%10;
midLeft/=10;
}
if(n.length()%2==0){
testNumber=(long)(left+i)*(long)Math.pow(10,countleftN)+midRight;
}
else{
testNumber=(long)(left+i)/10*(long)Math.pow(10,countleftN)+midRight;
}
System.out.println(testNumber);
s=testNumber-m;
if(s!=0&&Math.abs(s)<Math.abs(min)){
min=s;
}
}
return String.valueOf(m+min);
}
}
fim
Fonte da pergunta: LeetCode link: https://leetcode-cn.com/problems
⭐️Siga o autor, leve você para escovar as perguntas e aprenda as habilidades de algoritmo mais usadas a partir de perguntas simples de algoritmo (uma pergunta por dia durante as férias de inverno) ⭐️Siga o autor para
escovar as perguntas - do simples ao avançado, permite torne-se uma máquina implacável para escovar perguntas sem saber, se você tiver alguma dúvida, envie uma mensagem privada