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:
- Loop through num till it becomes zero.
- Get the most right number.
- First multiply by 10. Later concat with the rightmost number(do not add)
- Remove most right number from num.
- 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
- Reference:
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
暂无评论内容