Integer Palindrome

PALINDROME INTEGER

KEYWORDS / QUESTIONS
num % 10 - Get right most number. num / 10 - Remove right most number.

NOTES

  • Number palindrome.
  • A palindrome is a word, phrase, number, or sequence of words that reads the same backward as forward. The straightforward solution would be to convert numbers to string and use the PalindromeString approach.
  • There are two most important things to remember.
  • To get the most right number, we can do ‘num % 10’.
  • To remove most right number, we can do ‘num / 10’.
  • Both will work for any numbers.

Steps:

  1. Loop through num till it becomes zero.
  2. Get the most right number.
  3. First multiply by 10. Later concat with the rightmost number(do not add)
  4. Remove most right number from num.
  5. If reversed version and original are equal so it’s a palindrome

Time Complexity: O(n)

  • ‘remainder = num % 10;’ here when num will become less than 10 expression will return that number so that’s how program copying last(first) number
  • ‘num = num / 10;’ here when num will become less than 10 expression will make it 0 and program will exit from the loop

Implementation

<span>package</span> <span>com.playground</span><span>;</span>
<span>public</span> <span>class</span> <span>PalindromeInteger</span> <span>{</span>
<span>public</span> <span>static</span> <span>boolean</span> <span>isPal</span><span>(</span><span>int</span> <span>num</span><span>)</span> <span>{</span>
<span>int</span> <span>copyOfOriginal</span> <span>=</span> <span>num</span><span>;</span>
<span>int</span> <span>reversedNumber</span> <span>=</span> <span>0</span><span>;</span>
<span>int</span> <span>remainder</span><span>;</span>
<span>// 1. Loop through num till it becomes zero.</span>
<span>while</span> <span>(</span><span>num</span> <span>></span> <span>0</span><span>)</span> <span>{</span>
<span>// 2. Get most right number.</span>
<span>remainder</span> <span>=</span> <span>num</span> <span>%</span> <span>10</span><span>;</span>
<span>// 3. First multiply by 10. Later concat with right most number(do not add)</span>
<span>reversedNumber</span> <span>=</span> <span>(</span><span>reversedNumber</span> <span>*</span> <span>10</span><span>)</span> <span>+</span> <span>remainder</span><span>;</span>
<span>// 4. Remove most right number from num.</span>
<span>num</span> <span>=</span> <span>num</span> <span>/</span> <span>10</span><span>;</span>
<span>}</span>
<span>// 5. If reversed version and original are equal so it's palindrome</span>
<span>return</span> <span>reversedNumber</span> <span>==</span> <span>copyOfOriginal</span><span>;</span>
<span>}</span>
<span>}</span>
<span>package</span> <span>com.playground</span><span>;</span>

<span>public</span> <span>class</span> <span>PalindromeInteger</span> <span>{</span>

    <span>public</span> <span>static</span> <span>boolean</span> <span>isPal</span><span>(</span><span>int</span> <span>num</span><span>)</span> <span>{</span>
        <span>int</span> <span>copyOfOriginal</span> <span>=</span> <span>num</span><span>;</span>
        <span>int</span> <span>reversedNumber</span> <span>=</span> <span>0</span><span>;</span>
        <span>int</span> <span>remainder</span><span>;</span>

        <span>// 1. Loop through num till it becomes zero.</span>
        <span>while</span> <span>(</span><span>num</span> <span>></span> <span>0</span><span>)</span> <span>{</span>
            <span>// 2. Get most right number.</span>
            <span>remainder</span> <span>=</span> <span>num</span> <span>%</span> <span>10</span><span>;</span>

            <span>// 3. First multiply by 10. Later concat with right most number(do not add)</span>
            <span>reversedNumber</span> <span>=</span> <span>(</span><span>reversedNumber</span> <span>*</span> <span>10</span><span>)</span> <span>+</span> <span>remainder</span><span>;</span>

            <span>// 4. Remove most right number from num.</span>
            <span>num</span> <span>=</span> <span>num</span> <span>/</span> <span>10</span><span>;</span>
        <span>}</span>

        <span>// 5. If reversed version and original are equal so it's palindrome</span>
        <span>return</span> <span>reversedNumber</span> <span>==</span> <span>copyOfOriginal</span><span>;</span>
    <span>}</span>
<span>}</span>
package com.playground; public class PalindromeInteger { public static boolean isPal(int num) { int copyOfOriginal = num; int reversedNumber = 0; int remainder; // 1. Loop through num till it becomes zero. while (num > 0) { // 2. Get most right number. remainder = num % 10; // 3. First multiply by 10. Later concat with right most number(do not add) reversedNumber = (reversedNumber * 10) + remainder; // 4. Remove most right number from num. num = num / 10; } // 5. If reversed version and original are equal so it's palindrome return reversedNumber == copyOfOriginal; } }

Enter fullscreen mode Exit fullscreen mode

Test

<span>package</span> <span>com.playground</span><span>;</span>
<span>import</span> <span>com.playground.PalindromeInteger</span><span>;</span>
<span>import</span> <span>org.junit.Assert</span><span>;</span>
<span>import</span> <span>org.junit.Test</span><span>;</span>
<span>public</span> <span>class</span> <span>PalindromeIntegerTest</span> <span>{</span>
<span>@Test</span>
<span>public</span> <span>void</span> <span>withValidPalInt</span><span>()</span> <span>{</span>
<span>Assert</span><span>.</span><span>assertEquals</span><span>(</span><span>PalindromeInteger</span><span>.</span><span>isPal</span><span>(</span><span>242</span><span>),</span> <span>true</span><span>);</span>
<span>}</span>
<span>@Test</span>
<span>public</span> <span>void</span> <span>withNonPalInt</span><span>()</span> <span>{</span>
<span>Assert</span><span>.</span><span>assertEquals</span><span>(</span><span>PalindromeInteger</span><span>.</span><span>isPal</span><span>(</span><span>243</span><span>),</span> <span>false</span><span>);</span>
<span>}</span>
<span>@Test</span>
<span>public</span> <span>void</span> <span>withSingleInt</span><span>()</span> <span>{</span>
<span>Assert</span><span>.</span><span>assertEquals</span><span>(</span><span>PalindromeInteger</span><span>.</span><span>isPal</span><span>(</span><span>2</span><span>),</span> <span>true</span><span>);</span>
<span>}</span>
<span>@Test</span>
<span>public</span> <span>void</span> <span>withTwoInt</span><span>()</span> <span>{</span>
<span>Assert</span><span>.</span><span>assertEquals</span><span>(</span><span>PalindromeInteger</span><span>.</span><span>isPal</span><span>(</span><span>40</span><span>),</span> <span>false</span><span>);</span>
<span>}</span>
<span>@Test</span>
<span>public</span> <span>void</span> <span>withTwoPalInt</span><span>()</span> <span>{</span>
<span>Assert</span><span>.</span><span>assertEquals</span><span>(</span><span>PalindromeInteger</span><span>.</span><span>isPal</span><span>(</span><span>44</span><span>),</span> <span>true</span><span>);</span>
<span>}</span>
<span>}</span>
<span>package</span> <span>com.playground</span><span>;</span>

<span>import</span> <span>com.playground.PalindromeInteger</span><span>;</span>
<span>import</span> <span>org.junit.Assert</span><span>;</span>
<span>import</span> <span>org.junit.Test</span><span>;</span>

<span>public</span> <span>class</span> <span>PalindromeIntegerTest</span> <span>{</span>

    <span>@Test</span>
    <span>public</span> <span>void</span> <span>withValidPalInt</span><span>()</span> <span>{</span>
        <span>Assert</span><span>.</span><span>assertEquals</span><span>(</span><span>PalindromeInteger</span><span>.</span><span>isPal</span><span>(</span><span>242</span><span>),</span> <span>true</span><span>);</span>
    <span>}</span>

    <span>@Test</span>
    <span>public</span> <span>void</span> <span>withNonPalInt</span><span>()</span> <span>{</span>
        <span>Assert</span><span>.</span><span>assertEquals</span><span>(</span><span>PalindromeInteger</span><span>.</span><span>isPal</span><span>(</span><span>243</span><span>),</span> <span>false</span><span>);</span>
    <span>}</span>

    <span>@Test</span>
    <span>public</span> <span>void</span> <span>withSingleInt</span><span>()</span> <span>{</span>
        <span>Assert</span><span>.</span><span>assertEquals</span><span>(</span><span>PalindromeInteger</span><span>.</span><span>isPal</span><span>(</span><span>2</span><span>),</span> <span>true</span><span>);</span>
    <span>}</span>

    <span>@Test</span>
    <span>public</span> <span>void</span> <span>withTwoInt</span><span>()</span> <span>{</span>
        <span>Assert</span><span>.</span><span>assertEquals</span><span>(</span><span>PalindromeInteger</span><span>.</span><span>isPal</span><span>(</span><span>40</span><span>),</span> <span>false</span><span>);</span>
    <span>}</span>

    <span>@Test</span>
    <span>public</span> <span>void</span> <span>withTwoPalInt</span><span>()</span> <span>{</span>
        <span>Assert</span><span>.</span><span>assertEquals</span><span>(</span><span>PalindromeInteger</span><span>.</span><span>isPal</span><span>(</span><span>44</span><span>),</span> <span>true</span><span>);</span>
    <span>}</span>

<span>}</span>
package com.playground; import com.playground.PalindromeInteger; import org.junit.Assert; import org.junit.Test; public class PalindromeIntegerTest { @Test public void withValidPalInt() { Assert.assertEquals(PalindromeInteger.isPal(242), true); } @Test public void withNonPalInt() { Assert.assertEquals(PalindromeInteger.isPal(243), false); } @Test public void withSingleInt() { Assert.assertEquals(PalindromeInteger.isPal(2), true); } @Test public void withTwoInt() { Assert.assertEquals(PalindromeInteger.isPal(40), false); } @Test public void withTwoPalInt() { Assert.assertEquals(PalindromeInteger.isPal(44), true); } }

Enter fullscreen mode Exit fullscreen mode


SUMMARY
There are two most important things to remember.
To get the most right number, we can do ‘num % 10’.
To remove most right number, we can do ‘num / 10’.
Both will work for any numbers.

原文链接:Integer Palindrome

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
Aim for the moon. If you miss, you may hit a star.
把月亮作为你的目标。如果你没打中,也许你还能打中星星
评论 抢沙发

请登录后发表评论

    暂无评论内容