Palindrome : String search « Data Type « Java






Palindrome

Palindrome
          
/* From http://java.sun.com/docs/books/tutorial/index.html */

/*
 * Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * -Redistribution of source code must retain the above copyright notice, this
 *  list of conditions and the following disclaimer.
 *
 * -Redistribution in binary form must reproduce the above copyright notice,
 *  this list of conditions and the following disclaimer in the documentation
 *  and/or other materials provided with the distribution.
 *
 * Neither the name of Sun Microsystems, Inc. or the names of contributors may
 * be used to endorse or promote products derived from this software without
 * specific prior written permission.
 *
 * This software is provided "AS IS," without a warranty of any kind. ALL
 * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING
 * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
 * OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN MIDROSYSTEMS, INC. ("SUN")
 * AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE
 * AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS
 * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST
 * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,
 * INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY
 * OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
 * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
 *
 * You acknowledge that this software is not designed, licensed or intended
 * for use in the design, construction, operation or maintenance of any
 * nuclear facility.
 */

public class Palindrome {

  public static boolean isPalindrome(String stringToTest) {
    String workingCopy = removeJunk(stringToTest);
    String reversedCopy = reverse(workingCopy);

    return reversedCopy.equalsIgnoreCase(workingCopy);
  }

  protected static String removeJunk(String string) {
    int i, len = string.length();
    StringBuffer dest = new StringBuffer(len);
    char c;

    for (i = (len - 1); i >= 0; i--) {
      c = string.charAt(i);
      if (Character.isLetterOrDigit(c)) {
        dest.append(c);
      }
    }

    return dest.toString();
  }

  protected static String reverse(String string) {
    StringBuffer sb = new StringBuffer(string);

    return sb.reverse().toString();
  }

  public static void main(String[] args) {
    String string = "Madam, I'm Adam.";

    System.out.println();
    System.out.println("Testing whether the following "
        + "string is a palindrome:");
    System.out.println("    " + string);
    System.out.println();

    if (isPalindrome(string)) {
      System.out.println("It IS a palindrome!");
    } else {
      System.out.println("It is NOT a palindrome!");
    }
    System.out.println();
  }
}
           
         
    
    
    
    
    
    
    
    
    
  








Related examples in the same category

1.String Region Match DemoString Region Match Demo
2.Look for particular sequences in sentencesLook for particular sequences in sentences
3.Strings -- extract printable strings from binary file
4.Java Search String
5.Java String endsWith
6.Java String startsWith
7.Search a substring Anywhere
8.Starts with, ignore case( regular expressions )
9.Ends with, ignore case( regular expressions )
10.Anywhere, ignore case( regular expressions )
11.Searching a String for a Character or a Substring
12.Not found returns -1
13.If a string contains a specific word
14.Not found
15.if a String starts with a digit or uppercase letter
16.Search a String to find the first index of any character in the given set of characters.
17.Search a String to find the first index of any character not in the given set of characters.
18.Searches a String for substrings delimited by a start and end tag, returning all matching substrings in an array.
19.Helper functions to query a strings end portion. The comparison is case insensitive.
20.Helper functions to query a strings start portion. The comparison is case insensitive.
21.Wrapper for arrays of ordered strings. This verifies the arrays and supports efficient lookups.
22.Returns an index into arra (or -1) where the character is not in the charset byte array.
23.Returns an int[] array of length segments containing the distribution count of the elements in unsorted int[] array with values between min and max (range).
24.Returns the next index of a character from the chars string
25.Finds the first index within a String, handling null.
26.Finds the last index within a String from a start position, handling null.
27.Finds the n-th index within a String, handling null.
28.Case insensitive check if a String ends with a specified suffix.
29.Case insensitive check if a String starts with a specified prefix.
30.Case insensitive removal of a substring if it is at the begining of a source string, otherwise returns the source string.
31.Case insensitive removal of a substring if it is at the end of a source string, otherwise returns the source string.
32.Check if a String ends with a specified suffix.
33.Check if a String starts with a specified prefix.
34.Determine if a String is contained in a String Collection
35.Determine if a String is contained in a String Collection, ignoring case
36.Determine if a String is contained in a String [], ignoring case
37.Determine if a String is contained in a String [], ignoring case or not as specified
38.Determine if a String is contained in a String[]
39.Determines if the specified string contains only Unicode letters or digits as defined by Character#isLetterOrDigit(char)
40.Determining the validity of various XML names
41.Return the nth index of the given token occurring in the given string
42.Find the earliest index of any of a set of potential substrings.
43.Find the latest index of any of a set of potential substrings.
44.Fast String Search
45.Performs continuous matching of a pattern in a given string.
46.Count match