Optimization of Java algorithm for calculating palindrome number

Source: Internet
Author: User
Public classPalindromenumber {/** * Create a map collection to store data and then judge the data to throw.PrivateMap<integer, list<string>>Palindromedata=NewHashmap<> (); /** * The number directly into a string and then through the middle of the string intercept by two to compare the resultsPublic BooleanIspalindromenumber (Long number) {//Single-digit directly returns less than 100 palindrome number is divisible by 11 divisible by 10 is definitely not a palindrome numberif(Number < 10)Return true;if(Number < 100) returnNumber% 11 = 0;if(number% 10 = 0)Return false; String numbers = number +""; * Three-digit palindrome number for example: 121 131 151 and so on are the same before and after the same directly to determine whether the same before and after the same direct return * and then conform to the rule of the number into a key 5 in a map inside a list of the * when number is 5 for the time to determine Whether the last number of the first number is the same * the same is removed from the middle of the end to the comparison * Whether or not the set in key 5 in the map contains the remaining three digits, returns true instead of Flase * where it returns if True then put a K EY is a 7 list for recursive dictionary processing * The palindrome number of the odd digit is similar to the palindrome number of the base digit, so it is not explained.if(Number > && number <= 999) {if(number/100 = = number% 10) {Palindromedata. computeifabsent (5, K->NewArraylist<string> ());Palindromedata. Get (5). Add (numbers);Return true; }Else return False; }if(Number >= 1001 && number <= 9999) {if(number/1000 = = number% && number/100% = = number% 100/10) {Palindromedata. computeifabsent (6, K->NewArraylist<string> ());Palindromedata. Get (6). Add (numbers);Return true; }Return false; String firstnumber = numbers.substring (0, 1), Lastnumber = Numbers.substring (Numbers.length ()- 1, Numbers.length ());if(!firstnumber.equals (Lastnumber))Return false;intLength = Numbers.length (); String subString = numbers.substring (1, length-1);if(Integer.parseint (subString) = = 0)Return true; returnIsmapdata (numbers, length, number,substring); }Private BooleanBaseispalindromenumber (String numberfrist, String numberslast, String numbersLast2) { for(inti = 0; I < numberslast.length (); ) {intindex = Numberslast.length ()-i-1;if(i = = 0)
                {/* To avoid a large data type traversal plus the first digit of the judgment if not the same direct return to reduce the number of times each need to be reversed data the length of the data as n reduces the number of n/2-1 times * * NumbersLast2 = numbersLast2 + numberslast.substring (index);if(!numberfrist.substring (0, 1). Equals (NumbersLast2))Return false; }Else{numbersLast2 = NumbersLast2 + numberslast.substring (index, index + 1);if(index = = 2 | | index = = 5 | | index = = 8) {if(!numberfrist.substring (0, Numberslast2.length ()). Equals (NumbersLast2))Return false;
        }} ++i; } returnNumberfrist.equals (NUMBERSLAST2); }Private BooleanOlderispalindromenumber (Long number) {//Single-digit directly returns less than 100 palindrome number is divisible by 11 divisible by 10 is definitely not palindrome number//System.out.println (nu mber+ "num");if(Number < 10)Return true;if(Number < 100) returnNumber% 11 = 0;if(number% 10 = 0)Return false; String numbers = number +"";
        SYSTEM.OUT.PRINTLN (numbers); /*system.out.println ("number = [" + numbers.length () + "]");intHalfindex = Numbers.length ()/2; String numberfrist = numbers.substring (0, halfIndex-1), Numberslast ="", NumbersLast2 =""; The last string interception needs to be noted is whether the string length is an evenif(Numbers.length ()/2 = 0)
        {numberslast= numbers.substring (halfIndex-1); }Else{numberslast = numbers.substring (halfindex+1); }//System.out.println (numberfrist+ "ssss" +numberslast); returnBaseispalindromenumber (Numberfrist, Numberslast, NumbersLast2); }Private BooleanIsmapdata (String numbers,intLengthLongNumber, String subString) {if(Palindromedata. Get (length)!=NULL) {//System.out.println ("Notnull Sub:" +numbers.substring (1,length-1));if(Palindromedata. get (length). Contains (subString)) {Palindromedata. computeifabsent (length + 2, K->NewArraylist<string> ());Palindromedata. Get (length + 2). Add (numbers);Return true; }Else{if(Subispalindromenumber (Numbers)) {Palindromedata. computeifabsent (length + 2, K->NewArraylist<string> ());Palindromedata. Get (length + 2). Add (numbers);Palindromedata. get (length). Add (subString);Return true; }Return false; }
        }Else{if(Subispalindromenumber (Numbers)) {Palindromedata. computeifabsent (length + 2, K->NewArraylist<string> ());Palindromedata. Get (length + 2). Add (numbers);Return true; }Else return False; }
    }Private BooleanSubispalindromenumber (String numbers) {intHalfindex = Numbers.length ()/2; String numberfrist = numbers.substring (0, halfIndex-1), Numberslast ="", NumbersLast2 =""; The last string interception needs to be noted is whether the string length is an evenif(Numbers.length ()/2 = 0)
        {numberslast= numbers.substring (halfindex); }Else{numberslast = numbers.substring (Halfindex); } returnBaseispalindromenumber (Numberfrist, Numberslast, NumbersLast2); }
}

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.