#java #algorithm #java-8 #numbers
#java #алгоритм #java-8 #числа
Вопрос:
Я решал следующую проблему с палиндромом, но не смог понять, почему мой код 1 показывает превышение срока и не работает должным образом, в то время как code2 прошел все тестовые случаи? Я использовал ту же концепцию при выполнении обоих кодов, но просто использовал процедуру во втором случае.
Вот два кода :
код 1
int no=sc.nextInt();
boolean check=true;
int rem,temp,rev=0;
while(check)
{
no ;
temp=no;
while(temp>0)
{
rem=temp%10;
temp=temp/10;
rev=rev*10 rem;
}
if(rev==no)
{
check=false;
System.out.println(no);
break;
}
}
}
catch(Exception e)
{
System.out.println(e);
}```
code 2
``` public static void main(String[] args) {
// TODO code application logic here
Scanner sc=new Scanner(System.in);
//Scanner sc=new Scanner(System.in);
int no=sc.nextInt();
boolean check=true;
int rem,temp,temp2=1,rev=0;
System.out.println(no);
while(temp2!=0)
{
//no=no 1;
if(pallin(no))
{
System.out.println(no);
temp2=0;
}
no ;
}
/*while(no<900)
{ no ;
//StringBuilder str_no=new StringBuilder(no);
System.out.println(str_no.reverse());
if(str_no.equals(str_no.reverse()) )
{
check=false;
break;
}
}
if(check==false)
{
System.out.println(no);
}*/
}
private static boolean pallin(int no)
{
int rem,temp=no,rev=0;
while(temp>0)
{
rem=temp%10;
temp=temp/10;
rev=rev*10 rem;
}
System.out.println(rev);
if(rev==no)
{
System.out.println(rev);
return true;
}
return false;
}
}```
Ответ №1:
Я думаю, что неправильно то, что вы установили свой int rev = 0. При вычислении rev=rev*10 rem;
вы получаете неправильный ответ. Более того, во вложенном цикле while с условием no>0;
no значение не меняется.