почему проблема с превышением срока отображается в одном коде при прохождении тестовых примеров в другом?

#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 значение не меняется.