% 및/가 있는 회문[Java]

문자열 변환을 사용하여 숫자가 회문인지 확인하는 다양한 방법을 사용할 수 있습니다. 여기에서 모듈로 연산자와 정수 나누기를 사용하여 Java에서 while 루프가 있는 알고리즘을 탐색하고 싶습니다.

숫자는 왼쪽에서 오른쪽으로 읽을 때와 오른쪽에서 왼쪽으로 읽을 때 숫자가 같으면 회문입니다. 예로서:
  • 1331은 회문입니다.
  • 1234가 아닙니다.

  • 따라서 반전된 숫자를 찾고 원래 숫자와 같은지 확인해야 합니다.

    이 시나리오에는 while 루프가 적합합니다. 우리는 원래 숫자를 가져와 원래 숫자로 분해할 것입니다. 우리는 이것을 역 넘버너를 재구축하기 위해 사용할 것입니다.

    솔루션으로 이동하기 전에 먼저 언급해야 할 몇 가지 속성이 있습니다.

    모듈로 연산자는 나눗셈의 나머지를 반환하므로 숫자가 %10이면 해당 숫자의 마지막 숫자를 갖게 됩니다. 반올림이 발생하지 않습니다.

    1123 MOD 10 = 3
    1124 MOD 10 = 4
    


    이것은 정수의 마지막 자리를 잡는 데 사용할 주요 도구입니다.

    정수 나누기는 나머지를 버립니다. 따라서 10으로 나눈 정수는 단순히 나머지 숫자를 제공하고 마지막 숫자를 제거합니다.

    이 단계는 다음 반복에서 나머지가 정확하도록 다른 숫자를 제공하는 데 중요합니다.

    위에서 언급한 모든 논리를 포함하는 솔루션 아래:

    
    public class Palindrome {
        public static void main(String[] args) {
    
            // hard-coding my numbers for ease of use
            int num = 1771;
            int temp = num;
    
            int reversedNumber = 0;
    
            while (temp > 0) {
    
                // MOD division to get the last digit
                int lastDigit = temp % 10;
    
                // reversed number built by adding the last digit 
                // to the previous last digit multiplied by 10. 
                // We are shifting the numbers.
                reversedNumber = reversedNumber * 10 + lastDigit;
    
                // integer division that will equal to 0 
                // if the number is < 10 and 
                // consequently stopping the while loop.
                temp = temp/10; 
            }
    
            if (num == reversedNumber) {
                System.out.println("It is a palindrome");
            } else {
                System.out.println("It is not a palindrome");
            }
        }
    }
    
    


    루프 내의 논리에 매료되었지만 이 접근 방식에 대해 어떻게 생각하는지 알려주세요.

    좋은 웹페이지 즐겨찾기