Check string for palindrome
A palindrome is a word, phrase, number or other sequence of units that can be read the same way in either direction.
To check whether a word is a palindrome I get the char array of the word and compare the chars. I tested it and it seems to work. However I want to know if it is right or if there is something to improve.
Here is my code:
public class Aufg1 {
public static void main(String args) {
String wort = "reliefpfpfeiller";
char warray = wort.toCharArray();
System.out.println(istPalindrom(warray));
}
public static boolean istPalindrom(char wort){
boolean palindrom = false;
if(wort.length%2 == 0){
for(int i = 0; i < wort.length/2-1; i++){
if(wort[i] != wort[wort.length-i-1]){
return false;
}else{
palindrom = true;
}
}
}else{
for(int i = 0; i < (wort.length-1)/2-1; i++){
if(wort[i] != wort[wort.length-i-1]){
return false;
}else{
palindrom = true;
}
}
}
return palindrom;
}
}
java arrays string char palindrome
add a comment |
A palindrome is a word, phrase, number or other sequence of units that can be read the same way in either direction.
To check whether a word is a palindrome I get the char array of the word and compare the chars. I tested it and it seems to work. However I want to know if it is right or if there is something to improve.
Here is my code:
public class Aufg1 {
public static void main(String args) {
String wort = "reliefpfpfeiller";
char warray = wort.toCharArray();
System.out.println(istPalindrom(warray));
}
public static boolean istPalindrom(char wort){
boolean palindrom = false;
if(wort.length%2 == 0){
for(int i = 0; i < wort.length/2-1; i++){
if(wort[i] != wort[wort.length-i-1]){
return false;
}else{
palindrom = true;
}
}
}else{
for(int i = 0; i < (wort.length-1)/2-1; i++){
if(wort[i] != wort[wort.length-i-1]){
return false;
}else{
palindrom = true;
}
}
}
return palindrom;
}
}
java arrays string char palindrome
3
Not sure if this is intentional but the string in your example - reliefpfpfeiller - isn't a palindrome
– barrowc
Nov 10 '10 at 1:47
add a comment |
A palindrome is a word, phrase, number or other sequence of units that can be read the same way in either direction.
To check whether a word is a palindrome I get the char array of the word and compare the chars. I tested it and it seems to work. However I want to know if it is right or if there is something to improve.
Here is my code:
public class Aufg1 {
public static void main(String args) {
String wort = "reliefpfpfeiller";
char warray = wort.toCharArray();
System.out.println(istPalindrom(warray));
}
public static boolean istPalindrom(char wort){
boolean palindrom = false;
if(wort.length%2 == 0){
for(int i = 0; i < wort.length/2-1; i++){
if(wort[i] != wort[wort.length-i-1]){
return false;
}else{
palindrom = true;
}
}
}else{
for(int i = 0; i < (wort.length-1)/2-1; i++){
if(wort[i] != wort[wort.length-i-1]){
return false;
}else{
palindrom = true;
}
}
}
return palindrom;
}
}
java arrays string char palindrome
A palindrome is a word, phrase, number or other sequence of units that can be read the same way in either direction.
To check whether a word is a palindrome I get the char array of the word and compare the chars. I tested it and it seems to work. However I want to know if it is right or if there is something to improve.
Here is my code:
public class Aufg1 {
public static void main(String args) {
String wort = "reliefpfpfeiller";
char warray = wort.toCharArray();
System.out.println(istPalindrom(warray));
}
public static boolean istPalindrom(char wort){
boolean palindrom = false;
if(wort.length%2 == 0){
for(int i = 0; i < wort.length/2-1; i++){
if(wort[i] != wort[wort.length-i-1]){
return false;
}else{
palindrom = true;
}
}
}else{
for(int i = 0; i < (wort.length-1)/2-1; i++){
if(wort[i] != wort[wort.length-i-1]){
return false;
}else{
palindrom = true;
}
}
}
return palindrom;
}
}
java arrays string char palindrome
java arrays string char palindrome
edited May 18 '15 at 23:07
Michael Myers♦
155k37256280
155k37256280
asked Nov 9 '10 at 21:28
Artjom Zabelin
35.4k111313530
35.4k111313530
3
Not sure if this is intentional but the string in your example - reliefpfpfeiller - isn't a palindrome
– barrowc
Nov 10 '10 at 1:47
add a comment |
3
Not sure if this is intentional but the string in your example - reliefpfpfeiller - isn't a palindrome
– barrowc
Nov 10 '10 at 1:47
3
3
Not sure if this is intentional but the string in your example - reliefpfpfeiller - isn't a palindrome
– barrowc
Nov 10 '10 at 1:47
Not sure if this is intentional but the string in your example - reliefpfpfeiller - isn't a palindrome
– barrowc
Nov 10 '10 at 1:47
add a comment |
34 Answers
34
active
oldest
votes
1 2
next
Why not just:
public static boolean istPalindrom(char word){
int i1 = 0;
int i2 = word.length - 1;
while (i2 > i1) {
if (word[i1] != word[i2]) {
return false;
}
++i1;
--i2;
}
return true;
}
Example:
Input is "andna".
i1 will be 0 and i2 will be 4.
First loop iteration we will compare word[0]
and word[4]
. They're equal, so we increment i1 (it's now 1) and decrement i2 (it's now 3).
So we then compare the n's. They're equal, so we increment i1 (it's now 2) and decrement i2 (it's 2).
Now i1 and i2 are equal (they're both 2), so the condition for the while loop is no longer true so the loop terminates and we return true.
1
instead of pre increment (++i1 and --i2), we can also use post increment (i1++, i2--)result is same i think !
– user0946076422
Aug 15 '15 at 3:44
@user0946076422 Yes. I too felt that way. Would be great if OP has a different explanation.
– Vijay Tholpadi
Mar 10 '17 at 3:11
2
@Vijay Tholpadi - It's just really a coding preference more than anything else. Post increment would accomplish same result in this particular example, but I always use pre increment unless there's a specific reason not to.
– dcp
Mar 15 '17 at 12:44
add a comment |
You can check if a string is a palindrome by comparing it to the reverse of itself:
public static boolean isPalindrome(String str) {
return str.equals(new StringBuilder(str).reverse().toString());
}
or for versions of Java earlier than 1.5,
public static boolean isPalindrome(String str) {
return str.equals(new StringBuffer().append(str).reverse().toString());
}
EDIT: @FernandoPelliccioni provided a very thorough analysis of the efficiency (or lack thereof) of this solution, both in terms of time and space. If you're interested in the computational complexity of this and other possible solutions to this question, please read it!
10
Compare the complexity of your algorithm with respect to others.
– Fernando Pelliccioni
Feb 3 '14 at 14:24
2
@FernandoPelliccioni, I think it's the same complexity as the other solutions, no?
– aioobe
Aug 23 '15 at 8:16
1
@Fernando, as far as I can tell all answers have a linear complexity. Because of this there's no way to give a definitive answer to which solution is most efficient. You could run benchmarks but they would be specific for a particular JVM and JRE. Best of luck with your blog post. Looking forward to reading it.
– aioobe
Aug 26 '15 at 21:24
15
Here my analysis: componentsprogramming.com/palindromes
– Fernando Pelliccioni
Jun 6 '16 at 21:09
1
@FernandoPelliccioni nice analysis
– Saravana
Jul 12 '16 at 4:11
|
show 9 more comments
A concise version, that doesn't involve (inefficiently) initializing a bunch of objects:
boolean isPalindrome(String str) {
int n = str.length();
for( int i = 0; i < n/2; i++ )
if (str.charAt(i) != str.charAt(n-i-1)) return false;
return true;
}
add a comment |
Alternatively, recursion.
For anybody who is looking for a shorter recursive solution, to check if a given string satisfies as a palindrome:
private boolean isPalindrome(String s) {
int length = s.length();
if (length < 2) // If the string only has 1 char or is empty
return true;
else {
// Check opposite ends of the string for equality
if (s.charAt(0) != s.charAt(length - 1))
return false;
// Function call for string with the two ends snipped off
else
return isPalindrome(s.substring(1, length - 1));
}
}
OR even shorter, if you'd like:
private boolean isPalindrome(String s) {
int length = s.length();
if (length < 2) return true;
else return s.charAt(0) != s.charAt(length - 1) ? false :
isPalindrome(s.substring(1, length - 1));
}
2
Nice code, recursion makes it really easy and less lines on code.
– Akash5288
Jan 31 '17 at 6:35
the shorter version can be simplified:return s.charAt(0) == s.charAt(l - 1) && isPalindrome(s.substring(1, l - 1));
– vault
Apr 19 '18 at 23:05
add a comment |
Go, Java:
public boolean isPalindrome (String word) {
String myWord = word.replaceAll("\s+","");
String reverse = new StringBuffer(myWord).reverse().toString();
return reverse.equalsIgnoreCase(myWord);
}
isPalindrome("Never Odd or Even"); // True
isPalindrome("Never Odd or Even1"); // False
add a comment |
public class Aufg1 {
public static void main(String args) {
String wort = "reliefpfpfeiller";
char warray = wort.toCharArray();
System.out.println(istPalindrom(warray));
}
public static boolean istPalindrom(char wort){
if(wort.length%2 == 0){
for(int i = 0; i < wort.length/2-1; i++){
if(wort[i] != wort[wort.length-i-1]){
return false;
}
}
}else{
for(int i = 0; i < (wort.length-1)/2-1; i++){
if(wort[i] != wort[wort.length-i-1]){
return false;
}
}
}
return true;
}
}
2
simplified a bit. but I like dcp's answer!
– Casey
Nov 9 '10 at 21:36
add a comment |
also a different looking solution:
public static boolean isPalindrome(String s) {
for (int i=0 , j=s.length()-1 ; i<j ; i++ , j-- ) {
if ( s.charAt(i) != s.charAt(j) ) {
return false;
}
}
return true;
}
add a comment |
And here a complete Java 8 streaming solution. An IntStream provides all indexes til strings half length and then a comparision from the start and from the end is done.
public static void main(String args) {
for (String testStr : Arrays.asList("testset", "none", "andna", "haah", "habh", "haaah")) {
System.out.println("testing " + testStr + " is palindrome=" + isPalindrome(testStr));
}
}
public static boolean isPalindrome(String str) {
return IntStream.range(0, str.length() / 2)
.noneMatch(i -> str.charAt(i) != str.charAt(str.length() - i - 1));
}
Output is:
testing testset is palindrome=true
testing none is palindrome=false
testing andna is palindrome=true
testing haah is palindrome=true
testing habh is palindrome=false
testing haaah is palindrome=true
Why notallMatch
withallMatch(i -> str.charAt(i) == str.charAt(str.length() - i - 1))
?
– gil.fernandes
Apr 5 '18 at 9:47
add a comment |
Checking palindrome for first half of the string with the rest, this case assumes removal of any white spaces.
public int isPalindrome(String a) {
//Remove all spaces and non alpha characters
String ab = a.replaceAll("[^A-Za-z0-9]", "").toLowerCase();
//System.out.println(ab);
for (int i=0; i<ab.length()/2; i++) {
if(ab.charAt(i) != ab.charAt((ab.length()-1)-i)) {
return 0;
}
}
return 1;
}
add a comment |
public class palindrome {
public static void main(String args) {
StringBuffer strBuf1 = new StringBuffer("malayalam");
StringBuffer strBuf2 = new StringBuffer("malayalam");
strBuf2.reverse();
System.out.println(strBuf2);
System.out.println((strBuf1.toString()).equals(strBuf2.toString()));
if ((strBuf1.toString()).equals(strBuf2.toString()))
System.out.println("palindrome");
else
System.out.println("not a palindrome");
}
}
add a comment |
I worked on a solution for a question that was marked as duplicate of this one.
Might as well throw it here...
The question requested a single line to solve this, and I took it more as the literary palindrome - so spaces, punctuation and upper/lower case can throw off the result.
Here's the ugly solution with a small test class:
public class Palindrome {
public static boolean isPalendrome(String arg) {
return arg.replaceAll("[^A-Za-z]", "").equalsIgnoreCase(new StringBuilder(arg).reverse().toString().replaceAll("[^A-Za-z]", ""));
}
public static void main(String args) {
System.out.println(isPalendrome("hiya"));
System.out.println(isPalendrome("star buttons not tub rats"));
System.out.println(isPalendrome("stab nail at ill Italian bats!"));
return;
}
}
Sorry that it is kind of nasty - but the other question specified a one-liner.
1
Just curious, why the ternary operator at the end?
– typingduck
Apr 17 '17 at 16:24
Absolutely nothing - I must not have had my coffee. Will fix my response - thanks!.
– Marc
May 24 '17 at 15:51
add a comment |
Amazing how many different solutions to such a simple problem exist! Here's another one.
private static boolean palindrome(String s){
String revS = "";
String checkS = s.toLowerCase();
String checkSArr = checkS.split("");
for(String e : checkSArr){
revS = e + revS;
}
return (checkS.equals(revS)) ? true : false;
}
add a comment |
Try this out :
import java.util.*;
public class str {
public static void main(String args)
{
Scanner in=new Scanner(System.in);
System.out.println("ENTER YOUR STRING: ");
String a=in.nextLine();
System.out.println("GIVEN STRING IS: "+a);
StringBuffer str=new StringBuffer(a);
StringBuffer str2=new StringBuffer(str.reverse());
String s2=new String(str2);
System.out.println("THE REVERSED STRING IS: "+str2);
if(a.equals(s2))
System.out.println("ITS A PALINDROME");
else
System.out.println("ITS NOT A PALINDROME");
}
}
add a comment |
I'm new to java and I'm taking up your question as a challenge to improve my knowledge.
import java.util.ArrayList;
import java.util.List;
public class PalindromeRecursiveBoolean {
public static boolean isPalindrome(String str) {
str = str.toUpperCase();
char strChars = str.toCharArray();
List<Character> word = new ArrayList<>();
for (char c : strChars) {
word.add(c);
}
while (true) {
if ((word.size() == 1) || (word.size() == 0)) {
return true;
}
if (word.get(0) == word.get(word.size() - 1)) {
word.remove(0);
word.remove(word.size() - 1);
} else {
return false;
}
}
}
}
- If the string is made of no letters or just one letter, it is a
palindrome. - Otherwise, compare the first and last letters of the string.
- If the first and last letters differ, then the string is not a palindrome
- Otherwise, the first and last letters are the same. Strip them from the string, and determine whether the string that remains is a palindrome. Take the answer for this smaller string and use it as the answer for the original string then repeat from 1.
add a comment |
public boolean isPalindrome(String abc){
if(abc != null && abc.length() > 0){
char arr = abc.toCharArray();
for (int i = 0; i < arr.length/2; i++) {
if(arr[i] != arr[arr.length - 1 - i]){
return false;
}
}
return true;
}
return false;
}
add a comment |
Another way is using char Array
public class Palindrome {
public static void main(String args) {
String str = "madam";
if(isPalindrome(str)) {
System.out.println("Palindrome");
} else {
System.out.println("Not a Palindrome");
}
}
private static boolean isPalindrome(String str) {
// Convert String to char array
char charArray = str.toCharArray();
for(int i=0; i < str.length(); i++) {
if(charArray[i] != charArray[(str.length()-1) - i]) {
return false;
}
}
return true;
}
}
1
This approach is excellent. Time Complexity O(n), space Complexity O(1)
– kanaparthikiran
Jan 1 '18 at 4:06
add a comment |
Here my analysis of the @Greg answer: componentsprogramming.com/palindromes
Sidenote: But, for me it is important to do it in a Generic way.
The requirements are that the sequence is bidirectionally iterable and the elements of the sequence are comparables using equality.
I don't know how to do it in Java, but, here is a C++ version, I don't know a better way to do it for bidirectional sequences.
template <BidirectionalIterator I>
requires( EqualityComparable< ValueType<I> > )
bool palindrome( I first, I last )
{
I m = middle(first, last);
auto rfirst = boost::make_reverse_iterator(last);
return std::equal(first, m, rfirst);
}
Complexity: linear-time,
If I is RandomAccessIterator:
floor(n/2) comparissons and floor(n/2)*2 iterationsIf I is BidirectionalIterator:
floor(n/2) comparissons and floor(n/2)*2 iterations
plus (3/2)*n iterations to find the middle ( middle function )storage: O(1)
No dymamic allocated memory
add a comment |
Recently I wrote a palindrome program which doesn't use StringBuilder. A late answer but this might come in handy to some people.
public boolean isPalindrome(String value) {
boolean isPalindrome = true;
for (int i = 0 , j = value.length() - 1 ; i < j ; i ++ , j --) {
if (value.charAt(i) != value.charAt(j)) {
isPalindrome = false;
}
}
return isPalindrome;
}
add a comment |
Using stack, it can be done like this
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
import java.util.*;
public class Solution {
public static void main(String args) {
Scanner in = new Scanner(System.in);
String str=in.nextLine();
str.replaceAll("\s+","");
//System.out.println(str);
Stack<String> stack=new Stack<String>();
stack.push(str);
String str_rev=stack.pop();
if(str.equals(str_rev)){
System.out.println("Palindrome");
}else{
System.out.println("Not Palindrome");
}
}
}
thanks! can you explain the code ??
– danny
Apr 28 '17 at 11:14
as you must be knowing that, stack is of LIFO type that means you are basically pushing data through the beginning of the stack and retrieving data from the end of stack using pop(). Hope this helps!
– aayushi
May 16 '17 at 19:42
add a comment |
public static boolean isPalindrome(String word) {
String str = "";
for (int i=word.length()-1; i>=0; i--){
str = str + word.charAt(i);
}
if(str.equalsIgnoreCase(word)){
return true;
}else{
return false;
}
}
add a comment |
- This implementation works for numbers and strings.
- Since we are not writing anything, so there is no need to convert the string into the character array.
public static boolean isPalindrome(Object obj)
{
String s = String.valueOf(obj);
for(int left=0, right=s.length()-1; left < right; left++,right--)
{
if(s.charAt(left++) != s.charAt(right--))
return false;
}
return true;
}
add a comment |
import java.util.Scanner;
public class Palindrom {
public static void main(String args)
{
Scanner in = new Scanner(System.in);
String str= in.nextLine();
int x= str.length();
if(x%2!=0)
{
for(int i=0;i<x/2;i++)
{
if(str.charAt(i)==str.charAt(x-1-i))
{
continue;
}
else
{
System.out.println("String is not a palindrom");
break;
}
}
}
else
{
for(int i=0;i<=x/2;i++)
{
if(str.charAt(i)==str.charAt(x-1-i))
{
continue;
}
else
{
System.out.println("String is not a palindrom");
break;
}
}
}
}
}
add a comment |
private static boolean isPalindrome(String word) {
int z = word.length();
boolean isPalindrome = false;
for (int i = 0; i <= word.length() / 2; i++) {
if (word.charAt(i) == word.charAt(--z)) {
isPalindrome = true;
}
}
return isPalindrome;
}
add a comment |
I was looking for a solution that not only worked for palindromes like...
- "Kayak"
- "Madam"
...but as well for...
- "A man, a plan, a canal, Panama!"
- "Was it a car or a cat I saw?"
- "No 'x' in Nixon"
Iterative: This has be proven as a good solution.
private boolean isPalindromeIterative(final String string)
{
final char characters =
string.replaceAll("[\W]", "").toLowerCase().toCharArray();
int iteratorLeft = 0;
int iteratorEnd = characters.length - 1;
while (iteratorEnd > iteratorLeft)
{
if (characters[iteratorLeft++] != characters[iteratorEnd--])
{
return false;
}
}
return true;
}
Recursive. I think this solution shouldn't be much worse than the iterative one. Is a little bit crapy we need to extract the cleaning step out of the method to avoid unnecesary procesing.
private boolean isPalindromeRecursive(final String string)
{
final String cleanString = string.replaceAll("[\W]", "").toLowerCase();
return isPalindromeRecursiveRecursion(cleanString);
}
private boolean isPalindromeRecursiveRecursion(final String cleanString)
{
final int cleanStringLength = cleanString.length();
return cleanStringLength <= 1 || cleanString.charAt(0) ==
cleanString.charAt(cleanStringLength - 1) &&
isPalindromeRecursiveRecursion
(cleanString.substring(1, cleanStringLength - 1));
}
Reversing: This has been proved as a expensive solution.
private boolean isPalindromeReversing(final String string)
{
final String cleanString = string.replaceAll("[\W]", "").toLowerCase();
return cleanString.equals(new StringBuilder(cleanString).reverse().toString());
}
All the credits to the guys answering in this post and bringing light to the topic.
add a comment |
Considering not letters in the words
public static boolean palindromeWords(String s ){
int left=0;
int right=s.length()-1;
while(left<=right){
while(left<right && !Character.isLetter(s.charAt(left))){
left++;
}
while(right>0 && !Character.isLetter(s.charAt(right))){
right--;
}
if((s.charAt(left++))!=(s.charAt(right--))){
return false;
}
}
return true;
}
———
@Test
public void testPalindromeWords(){
assertTrue(StringExercise.palindromeWords("ece"));
assertTrue(StringExercise.palindromeWords("kavak"));
assertFalse(StringExercise.palindromeWords("kavakdf"));
assertTrue(StringExercise.palindromeWords("akka"));
assertTrue(StringExercise.palindromeWords("??e@@c_--e"));
}
add a comment |
Here you can check palindrome a number of String dynamically
import java.util.Scanner;
public class Checkpalindrome {
public static void main(String args) {
String original, reverse = "";
Scanner in = new Scanner(System.in);
System.out.println("Enter How Many number of Input you want : ");
int numOfInt = in.nextInt();
original = in.nextLine();
do {
if (numOfInt == 0) {
System.out.println("Your Input Conplete");
}
else {
System.out.println("Enter a string to check palindrome");
original = in.nextLine();
StringBuffer buffer = new StringBuffer(original);
reverse = buffer.reverse().toString();
if (original.equalsIgnoreCase(reverse)) {
System.out.println("The entered string is Palindrome:"+reverse);
}
else {
System.out.println("The entered string is not Palindrome:"+reverse);
}
}
numOfInt--;
} while (numOfInt >= 0);
}
}
add a comment |
IMO, the recursive way is the simplest and clearest.
public static boolean isPal(String s)
{
if(s.length() == 0 || s.length() == 1)
return true;
if(s.charAt(0) == s.charAt(s.length()-1))
return isPal(s.substring(1, s.length()-1));
return false;
}
2
This already has been used in an answer: Check string for palindrome (just a note)
– Tom
Jan 8 '17 at 22:00
sorry, I missed it.
– john Smith
Jan 9 '17 at 13:48
add a comment |
here, checking for the largest palindrome in a string, always starting from 1st char.
public static String largestPalindromeInString(String in) {
int right = in.length() - 1;
int left = 0;
char word = in.toCharArray();
while (right > left && word[right] != word[left]) {
right--;
}
int lenght = right + 1;
while (right > left && word[right] == word[left]) {
left++;
right--;
}
if (0 >= right - left) {
return new String(Arrays.copyOf(word, lenght ));
} else {
return largestPalindromeInString(
new String(Arrays.copyOf(word, in.length() - 1)));
}
}
add a comment |
Code Snippet:
import java.util.Scanner;
class main
{
public static void main(String args)
{
Scanner sc = new Scanner(System.in);
String str = sc.next();
String reverse = new StringBuffer(str).reverse().toString();
if(str.equals(reverse))
System.out.println("Pallindrome");
else
System.out.println("Not Pallindrome");
}
}
add a comment |
import java.util.Collections;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
public class GetAllPalindromes
{
static Scanner in;
public static void main(String args)
{
in = new Scanner(System.in);
System.out.println("Enter a string n");
String abc = in.nextLine();
Set a = printAllPalindromes(abc);
System.out.println("set is " + a);
}
public static Set<CharSequence> printAllPalindromes(String input)
{
if (input.length() <= 2) {
return Collections.emptySet();
}
Set<CharSequence> out = new HashSet<CharSequence>();
int length = input.length();
for (int i = 1; i < length - 1; i++)
{
for (int j = i - 1, k = i + 1; j >= 0 && k < length; j--, k++)
{
if (input.charAt(j) == input.charAt(k)) {
out.add(input.subSequence(j, k + 1));
} else {
break;
}
}
}
return out;
}
}
**Get All Palindrome in s given string**
Output
D:Java>java GetAllPalindromes
Enter a string
Hello user nitin is my best friend wow !
Answer is set is [nitin, nitin , wow , wow, iti]
D:Java>
add a comment |
1 2
next
protected by Community♦ Apr 7 '13 at 17:01
Thank you for your interest in this question.
Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).
Would you like to answer one of these unanswered questions instead?
34 Answers
34
active
oldest
votes
34 Answers
34
active
oldest
votes
active
oldest
votes
active
oldest
votes
1 2
next
Why not just:
public static boolean istPalindrom(char word){
int i1 = 0;
int i2 = word.length - 1;
while (i2 > i1) {
if (word[i1] != word[i2]) {
return false;
}
++i1;
--i2;
}
return true;
}
Example:
Input is "andna".
i1 will be 0 and i2 will be 4.
First loop iteration we will compare word[0]
and word[4]
. They're equal, so we increment i1 (it's now 1) and decrement i2 (it's now 3).
So we then compare the n's. They're equal, so we increment i1 (it's now 2) and decrement i2 (it's 2).
Now i1 and i2 are equal (they're both 2), so the condition for the while loop is no longer true so the loop terminates and we return true.
1
instead of pre increment (++i1 and --i2), we can also use post increment (i1++, i2--)result is same i think !
– user0946076422
Aug 15 '15 at 3:44
@user0946076422 Yes. I too felt that way. Would be great if OP has a different explanation.
– Vijay Tholpadi
Mar 10 '17 at 3:11
2
@Vijay Tholpadi - It's just really a coding preference more than anything else. Post increment would accomplish same result in this particular example, but I always use pre increment unless there's a specific reason not to.
– dcp
Mar 15 '17 at 12:44
add a comment |
Why not just:
public static boolean istPalindrom(char word){
int i1 = 0;
int i2 = word.length - 1;
while (i2 > i1) {
if (word[i1] != word[i2]) {
return false;
}
++i1;
--i2;
}
return true;
}
Example:
Input is "andna".
i1 will be 0 and i2 will be 4.
First loop iteration we will compare word[0]
and word[4]
. They're equal, so we increment i1 (it's now 1) and decrement i2 (it's now 3).
So we then compare the n's. They're equal, so we increment i1 (it's now 2) and decrement i2 (it's 2).
Now i1 and i2 are equal (they're both 2), so the condition for the while loop is no longer true so the loop terminates and we return true.
1
instead of pre increment (++i1 and --i2), we can also use post increment (i1++, i2--)result is same i think !
– user0946076422
Aug 15 '15 at 3:44
@user0946076422 Yes. I too felt that way. Would be great if OP has a different explanation.
– Vijay Tholpadi
Mar 10 '17 at 3:11
2
@Vijay Tholpadi - It's just really a coding preference more than anything else. Post increment would accomplish same result in this particular example, but I always use pre increment unless there's a specific reason not to.
– dcp
Mar 15 '17 at 12:44
add a comment |
Why not just:
public static boolean istPalindrom(char word){
int i1 = 0;
int i2 = word.length - 1;
while (i2 > i1) {
if (word[i1] != word[i2]) {
return false;
}
++i1;
--i2;
}
return true;
}
Example:
Input is "andna".
i1 will be 0 and i2 will be 4.
First loop iteration we will compare word[0]
and word[4]
. They're equal, so we increment i1 (it's now 1) and decrement i2 (it's now 3).
So we then compare the n's. They're equal, so we increment i1 (it's now 2) and decrement i2 (it's 2).
Now i1 and i2 are equal (they're both 2), so the condition for the while loop is no longer true so the loop terminates and we return true.
Why not just:
public static boolean istPalindrom(char word){
int i1 = 0;
int i2 = word.length - 1;
while (i2 > i1) {
if (word[i1] != word[i2]) {
return false;
}
++i1;
--i2;
}
return true;
}
Example:
Input is "andna".
i1 will be 0 and i2 will be 4.
First loop iteration we will compare word[0]
and word[4]
. They're equal, so we increment i1 (it's now 1) and decrement i2 (it's now 3).
So we then compare the n's. They're equal, so we increment i1 (it's now 2) and decrement i2 (it's 2).
Now i1 and i2 are equal (they're both 2), so the condition for the while loop is no longer true so the loop terminates and we return true.
edited May 18 '15 at 23:05
Michael Myers♦
155k37256280
155k37256280
answered Nov 9 '10 at 21:32
dcp
42.7k16119146
42.7k16119146
1
instead of pre increment (++i1 and --i2), we can also use post increment (i1++, i2--)result is same i think !
– user0946076422
Aug 15 '15 at 3:44
@user0946076422 Yes. I too felt that way. Would be great if OP has a different explanation.
– Vijay Tholpadi
Mar 10 '17 at 3:11
2
@Vijay Tholpadi - It's just really a coding preference more than anything else. Post increment would accomplish same result in this particular example, but I always use pre increment unless there's a specific reason not to.
– dcp
Mar 15 '17 at 12:44
add a comment |
1
instead of pre increment (++i1 and --i2), we can also use post increment (i1++, i2--)result is same i think !
– user0946076422
Aug 15 '15 at 3:44
@user0946076422 Yes. I too felt that way. Would be great if OP has a different explanation.
– Vijay Tholpadi
Mar 10 '17 at 3:11
2
@Vijay Tholpadi - It's just really a coding preference more than anything else. Post increment would accomplish same result in this particular example, but I always use pre increment unless there's a specific reason not to.
– dcp
Mar 15 '17 at 12:44
1
1
instead of pre increment (++i1 and --i2), we can also use post increment (i1++, i2--)result is same i think !
– user0946076422
Aug 15 '15 at 3:44
instead of pre increment (++i1 and --i2), we can also use post increment (i1++, i2--)result is same i think !
– user0946076422
Aug 15 '15 at 3:44
@user0946076422 Yes. I too felt that way. Would be great if OP has a different explanation.
– Vijay Tholpadi
Mar 10 '17 at 3:11
@user0946076422 Yes. I too felt that way. Would be great if OP has a different explanation.
– Vijay Tholpadi
Mar 10 '17 at 3:11
2
2
@Vijay Tholpadi - It's just really a coding preference more than anything else. Post increment would accomplish same result in this particular example, but I always use pre increment unless there's a specific reason not to.
– dcp
Mar 15 '17 at 12:44
@Vijay Tholpadi - It's just really a coding preference more than anything else. Post increment would accomplish same result in this particular example, but I always use pre increment unless there's a specific reason not to.
– dcp
Mar 15 '17 at 12:44
add a comment |
You can check if a string is a palindrome by comparing it to the reverse of itself:
public static boolean isPalindrome(String str) {
return str.equals(new StringBuilder(str).reverse().toString());
}
or for versions of Java earlier than 1.5,
public static boolean isPalindrome(String str) {
return str.equals(new StringBuffer().append(str).reverse().toString());
}
EDIT: @FernandoPelliccioni provided a very thorough analysis of the efficiency (or lack thereof) of this solution, both in terms of time and space. If you're interested in the computational complexity of this and other possible solutions to this question, please read it!
10
Compare the complexity of your algorithm with respect to others.
– Fernando Pelliccioni
Feb 3 '14 at 14:24
2
@FernandoPelliccioni, I think it's the same complexity as the other solutions, no?
– aioobe
Aug 23 '15 at 8:16
1
@Fernando, as far as I can tell all answers have a linear complexity. Because of this there's no way to give a definitive answer to which solution is most efficient. You could run benchmarks but they would be specific for a particular JVM and JRE. Best of luck with your blog post. Looking forward to reading it.
– aioobe
Aug 26 '15 at 21:24
15
Here my analysis: componentsprogramming.com/palindromes
– Fernando Pelliccioni
Jun 6 '16 at 21:09
1
@FernandoPelliccioni nice analysis
– Saravana
Jul 12 '16 at 4:11
|
show 9 more comments
You can check if a string is a palindrome by comparing it to the reverse of itself:
public static boolean isPalindrome(String str) {
return str.equals(new StringBuilder(str).reverse().toString());
}
or for versions of Java earlier than 1.5,
public static boolean isPalindrome(String str) {
return str.equals(new StringBuffer().append(str).reverse().toString());
}
EDIT: @FernandoPelliccioni provided a very thorough analysis of the efficiency (or lack thereof) of this solution, both in terms of time and space. If you're interested in the computational complexity of this and other possible solutions to this question, please read it!
10
Compare the complexity of your algorithm with respect to others.
– Fernando Pelliccioni
Feb 3 '14 at 14:24
2
@FernandoPelliccioni, I think it's the same complexity as the other solutions, no?
– aioobe
Aug 23 '15 at 8:16
1
@Fernando, as far as I can tell all answers have a linear complexity. Because of this there's no way to give a definitive answer to which solution is most efficient. You could run benchmarks but they would be specific for a particular JVM and JRE. Best of luck with your blog post. Looking forward to reading it.
– aioobe
Aug 26 '15 at 21:24
15
Here my analysis: componentsprogramming.com/palindromes
– Fernando Pelliccioni
Jun 6 '16 at 21:09
1
@FernandoPelliccioni nice analysis
– Saravana
Jul 12 '16 at 4:11
|
show 9 more comments
You can check if a string is a palindrome by comparing it to the reverse of itself:
public static boolean isPalindrome(String str) {
return str.equals(new StringBuilder(str).reverse().toString());
}
or for versions of Java earlier than 1.5,
public static boolean isPalindrome(String str) {
return str.equals(new StringBuffer().append(str).reverse().toString());
}
EDIT: @FernandoPelliccioni provided a very thorough analysis of the efficiency (or lack thereof) of this solution, both in terms of time and space. If you're interested in the computational complexity of this and other possible solutions to this question, please read it!
You can check if a string is a palindrome by comparing it to the reverse of itself:
public static boolean isPalindrome(String str) {
return str.equals(new StringBuilder(str).reverse().toString());
}
or for versions of Java earlier than 1.5,
public static boolean isPalindrome(String str) {
return str.equals(new StringBuffer().append(str).reverse().toString());
}
EDIT: @FernandoPelliccioni provided a very thorough analysis of the efficiency (or lack thereof) of this solution, both in terms of time and space. If you're interested in the computational complexity of this and other possible solutions to this question, please read it!
edited Jul 13 '16 at 20:10
answered Nov 9 '10 at 21:54
Greg
28.5k138297
28.5k138297
10
Compare the complexity of your algorithm with respect to others.
– Fernando Pelliccioni
Feb 3 '14 at 14:24
2
@FernandoPelliccioni, I think it's the same complexity as the other solutions, no?
– aioobe
Aug 23 '15 at 8:16
1
@Fernando, as far as I can tell all answers have a linear complexity. Because of this there's no way to give a definitive answer to which solution is most efficient. You could run benchmarks but they would be specific for a particular JVM and JRE. Best of luck with your blog post. Looking forward to reading it.
– aioobe
Aug 26 '15 at 21:24
15
Here my analysis: componentsprogramming.com/palindromes
– Fernando Pelliccioni
Jun 6 '16 at 21:09
1
@FernandoPelliccioni nice analysis
– Saravana
Jul 12 '16 at 4:11
|
show 9 more comments
10
Compare the complexity of your algorithm with respect to others.
– Fernando Pelliccioni
Feb 3 '14 at 14:24
2
@FernandoPelliccioni, I think it's the same complexity as the other solutions, no?
– aioobe
Aug 23 '15 at 8:16
1
@Fernando, as far as I can tell all answers have a linear complexity. Because of this there's no way to give a definitive answer to which solution is most efficient. You could run benchmarks but they would be specific for a particular JVM and JRE. Best of luck with your blog post. Looking forward to reading it.
– aioobe
Aug 26 '15 at 21:24
15
Here my analysis: componentsprogramming.com/palindromes
– Fernando Pelliccioni
Jun 6 '16 at 21:09
1
@FernandoPelliccioni nice analysis
– Saravana
Jul 12 '16 at 4:11
10
10
Compare the complexity of your algorithm with respect to others.
– Fernando Pelliccioni
Feb 3 '14 at 14:24
Compare the complexity of your algorithm with respect to others.
– Fernando Pelliccioni
Feb 3 '14 at 14:24
2
2
@FernandoPelliccioni, I think it's the same complexity as the other solutions, no?
– aioobe
Aug 23 '15 at 8:16
@FernandoPelliccioni, I think it's the same complexity as the other solutions, no?
– aioobe
Aug 23 '15 at 8:16
1
1
@Fernando, as far as I can tell all answers have a linear complexity. Because of this there's no way to give a definitive answer to which solution is most efficient. You could run benchmarks but they would be specific for a particular JVM and JRE. Best of luck with your blog post. Looking forward to reading it.
– aioobe
Aug 26 '15 at 21:24
@Fernando, as far as I can tell all answers have a linear complexity. Because of this there's no way to give a definitive answer to which solution is most efficient. You could run benchmarks but they would be specific for a particular JVM and JRE. Best of luck with your blog post. Looking forward to reading it.
– aioobe
Aug 26 '15 at 21:24
15
15
Here my analysis: componentsprogramming.com/palindromes
– Fernando Pelliccioni
Jun 6 '16 at 21:09
Here my analysis: componentsprogramming.com/palindromes
– Fernando Pelliccioni
Jun 6 '16 at 21:09
1
1
@FernandoPelliccioni nice analysis
– Saravana
Jul 12 '16 at 4:11
@FernandoPelliccioni nice analysis
– Saravana
Jul 12 '16 at 4:11
|
show 9 more comments
A concise version, that doesn't involve (inefficiently) initializing a bunch of objects:
boolean isPalindrome(String str) {
int n = str.length();
for( int i = 0; i < n/2; i++ )
if (str.charAt(i) != str.charAt(n-i-1)) return false;
return true;
}
add a comment |
A concise version, that doesn't involve (inefficiently) initializing a bunch of objects:
boolean isPalindrome(String str) {
int n = str.length();
for( int i = 0; i < n/2; i++ )
if (str.charAt(i) != str.charAt(n-i-1)) return false;
return true;
}
add a comment |
A concise version, that doesn't involve (inefficiently) initializing a bunch of objects:
boolean isPalindrome(String str) {
int n = str.length();
for( int i = 0; i < n/2; i++ )
if (str.charAt(i) != str.charAt(n-i-1)) return false;
return true;
}
A concise version, that doesn't involve (inefficiently) initializing a bunch of objects:
boolean isPalindrome(String str) {
int n = str.length();
for( int i = 0; i < n/2; i++ )
if (str.charAt(i) != str.charAt(n-i-1)) return false;
return true;
}
edited Aug 13 '13 at 6:01
David Robles
6,59453242
6,59453242
answered Feb 22 '13 at 6:42
Andrew Mao
22.4k1193183
22.4k1193183
add a comment |
add a comment |
Alternatively, recursion.
For anybody who is looking for a shorter recursive solution, to check if a given string satisfies as a palindrome:
private boolean isPalindrome(String s) {
int length = s.length();
if (length < 2) // If the string only has 1 char or is empty
return true;
else {
// Check opposite ends of the string for equality
if (s.charAt(0) != s.charAt(length - 1))
return false;
// Function call for string with the two ends snipped off
else
return isPalindrome(s.substring(1, length - 1));
}
}
OR even shorter, if you'd like:
private boolean isPalindrome(String s) {
int length = s.length();
if (length < 2) return true;
else return s.charAt(0) != s.charAt(length - 1) ? false :
isPalindrome(s.substring(1, length - 1));
}
2
Nice code, recursion makes it really easy and less lines on code.
– Akash5288
Jan 31 '17 at 6:35
the shorter version can be simplified:return s.charAt(0) == s.charAt(l - 1) && isPalindrome(s.substring(1, l - 1));
– vault
Apr 19 '18 at 23:05
add a comment |
Alternatively, recursion.
For anybody who is looking for a shorter recursive solution, to check if a given string satisfies as a palindrome:
private boolean isPalindrome(String s) {
int length = s.length();
if (length < 2) // If the string only has 1 char or is empty
return true;
else {
// Check opposite ends of the string for equality
if (s.charAt(0) != s.charAt(length - 1))
return false;
// Function call for string with the two ends snipped off
else
return isPalindrome(s.substring(1, length - 1));
}
}
OR even shorter, if you'd like:
private boolean isPalindrome(String s) {
int length = s.length();
if (length < 2) return true;
else return s.charAt(0) != s.charAt(length - 1) ? false :
isPalindrome(s.substring(1, length - 1));
}
2
Nice code, recursion makes it really easy and less lines on code.
– Akash5288
Jan 31 '17 at 6:35
the shorter version can be simplified:return s.charAt(0) == s.charAt(l - 1) && isPalindrome(s.substring(1, l - 1));
– vault
Apr 19 '18 at 23:05
add a comment |
Alternatively, recursion.
For anybody who is looking for a shorter recursive solution, to check if a given string satisfies as a palindrome:
private boolean isPalindrome(String s) {
int length = s.length();
if (length < 2) // If the string only has 1 char or is empty
return true;
else {
// Check opposite ends of the string for equality
if (s.charAt(0) != s.charAt(length - 1))
return false;
// Function call for string with the two ends snipped off
else
return isPalindrome(s.substring(1, length - 1));
}
}
OR even shorter, if you'd like:
private boolean isPalindrome(String s) {
int length = s.length();
if (length < 2) return true;
else return s.charAt(0) != s.charAt(length - 1) ? false :
isPalindrome(s.substring(1, length - 1));
}
Alternatively, recursion.
For anybody who is looking for a shorter recursive solution, to check if a given string satisfies as a palindrome:
private boolean isPalindrome(String s) {
int length = s.length();
if (length < 2) // If the string only has 1 char or is empty
return true;
else {
// Check opposite ends of the string for equality
if (s.charAt(0) != s.charAt(length - 1))
return false;
// Function call for string with the two ends snipped off
else
return isPalindrome(s.substring(1, length - 1));
}
}
OR even shorter, if you'd like:
private boolean isPalindrome(String s) {
int length = s.length();
if (length < 2) return true;
else return s.charAt(0) != s.charAt(length - 1) ? false :
isPalindrome(s.substring(1, length - 1));
}
edited Oct 30 '16 at 13:46
answered Oct 30 '16 at 13:39
Keith OYS
1,97152332
1,97152332
2
Nice code, recursion makes it really easy and less lines on code.
– Akash5288
Jan 31 '17 at 6:35
the shorter version can be simplified:return s.charAt(0) == s.charAt(l - 1) && isPalindrome(s.substring(1, l - 1));
– vault
Apr 19 '18 at 23:05
add a comment |
2
Nice code, recursion makes it really easy and less lines on code.
– Akash5288
Jan 31 '17 at 6:35
the shorter version can be simplified:return s.charAt(0) == s.charAt(l - 1) && isPalindrome(s.substring(1, l - 1));
– vault
Apr 19 '18 at 23:05
2
2
Nice code, recursion makes it really easy and less lines on code.
– Akash5288
Jan 31 '17 at 6:35
Nice code, recursion makes it really easy and less lines on code.
– Akash5288
Jan 31 '17 at 6:35
the shorter version can be simplified:
return s.charAt(0) == s.charAt(l - 1) && isPalindrome(s.substring(1, l - 1));
– vault
Apr 19 '18 at 23:05
the shorter version can be simplified:
return s.charAt(0) == s.charAt(l - 1) && isPalindrome(s.substring(1, l - 1));
– vault
Apr 19 '18 at 23:05
add a comment |
Go, Java:
public boolean isPalindrome (String word) {
String myWord = word.replaceAll("\s+","");
String reverse = new StringBuffer(myWord).reverse().toString();
return reverse.equalsIgnoreCase(myWord);
}
isPalindrome("Never Odd or Even"); // True
isPalindrome("Never Odd or Even1"); // False
add a comment |
Go, Java:
public boolean isPalindrome (String word) {
String myWord = word.replaceAll("\s+","");
String reverse = new StringBuffer(myWord).reverse().toString();
return reverse.equalsIgnoreCase(myWord);
}
isPalindrome("Never Odd or Even"); // True
isPalindrome("Never Odd or Even1"); // False
add a comment |
Go, Java:
public boolean isPalindrome (String word) {
String myWord = word.replaceAll("\s+","");
String reverse = new StringBuffer(myWord).reverse().toString();
return reverse.equalsIgnoreCase(myWord);
}
isPalindrome("Never Odd or Even"); // True
isPalindrome("Never Odd or Even1"); // False
Go, Java:
public boolean isPalindrome (String word) {
String myWord = word.replaceAll("\s+","");
String reverse = new StringBuffer(myWord).reverse().toString();
return reverse.equalsIgnoreCase(myWord);
}
isPalindrome("Never Odd or Even"); // True
isPalindrome("Never Odd or Even1"); // False
answered Mar 4 '14 at 8:44
Francisco Gutiérrez
9981022
9981022
add a comment |
add a comment |
public class Aufg1 {
public static void main(String args) {
String wort = "reliefpfpfeiller";
char warray = wort.toCharArray();
System.out.println(istPalindrom(warray));
}
public static boolean istPalindrom(char wort){
if(wort.length%2 == 0){
for(int i = 0; i < wort.length/2-1; i++){
if(wort[i] != wort[wort.length-i-1]){
return false;
}
}
}else{
for(int i = 0; i < (wort.length-1)/2-1; i++){
if(wort[i] != wort[wort.length-i-1]){
return false;
}
}
}
return true;
}
}
2
simplified a bit. but I like dcp's answer!
– Casey
Nov 9 '10 at 21:36
add a comment |
public class Aufg1 {
public static void main(String args) {
String wort = "reliefpfpfeiller";
char warray = wort.toCharArray();
System.out.println(istPalindrom(warray));
}
public static boolean istPalindrom(char wort){
if(wort.length%2 == 0){
for(int i = 0; i < wort.length/2-1; i++){
if(wort[i] != wort[wort.length-i-1]){
return false;
}
}
}else{
for(int i = 0; i < (wort.length-1)/2-1; i++){
if(wort[i] != wort[wort.length-i-1]){
return false;
}
}
}
return true;
}
}
2
simplified a bit. but I like dcp's answer!
– Casey
Nov 9 '10 at 21:36
add a comment |
public class Aufg1 {
public static void main(String args) {
String wort = "reliefpfpfeiller";
char warray = wort.toCharArray();
System.out.println(istPalindrom(warray));
}
public static boolean istPalindrom(char wort){
if(wort.length%2 == 0){
for(int i = 0; i < wort.length/2-1; i++){
if(wort[i] != wort[wort.length-i-1]){
return false;
}
}
}else{
for(int i = 0; i < (wort.length-1)/2-1; i++){
if(wort[i] != wort[wort.length-i-1]){
return false;
}
}
}
return true;
}
}
public class Aufg1 {
public static void main(String args) {
String wort = "reliefpfpfeiller";
char warray = wort.toCharArray();
System.out.println(istPalindrom(warray));
}
public static boolean istPalindrom(char wort){
if(wort.length%2 == 0){
for(int i = 0; i < wort.length/2-1; i++){
if(wort[i] != wort[wort.length-i-1]){
return false;
}
}
}else{
for(int i = 0; i < (wort.length-1)/2-1; i++){
if(wort[i] != wort[wort.length-i-1]){
return false;
}
}
}
return true;
}
}
edited Nov 9 '10 at 21:41
answered Nov 9 '10 at 21:35
Casey
6,8781559103
6,8781559103
2
simplified a bit. but I like dcp's answer!
– Casey
Nov 9 '10 at 21:36
add a comment |
2
simplified a bit. but I like dcp's answer!
– Casey
Nov 9 '10 at 21:36
2
2
simplified a bit. but I like dcp's answer!
– Casey
Nov 9 '10 at 21:36
simplified a bit. but I like dcp's answer!
– Casey
Nov 9 '10 at 21:36
add a comment |
also a different looking solution:
public static boolean isPalindrome(String s) {
for (int i=0 , j=s.length()-1 ; i<j ; i++ , j-- ) {
if ( s.charAt(i) != s.charAt(j) ) {
return false;
}
}
return true;
}
add a comment |
also a different looking solution:
public static boolean isPalindrome(String s) {
for (int i=0 , j=s.length()-1 ; i<j ; i++ , j-- ) {
if ( s.charAt(i) != s.charAt(j) ) {
return false;
}
}
return true;
}
add a comment |
also a different looking solution:
public static boolean isPalindrome(String s) {
for (int i=0 , j=s.length()-1 ; i<j ; i++ , j-- ) {
if ( s.charAt(i) != s.charAt(j) ) {
return false;
}
}
return true;
}
also a different looking solution:
public static boolean isPalindrome(String s) {
for (int i=0 , j=s.length()-1 ; i<j ; i++ , j-- ) {
if ( s.charAt(i) != s.charAt(j) ) {
return false;
}
}
return true;
}
answered May 26 '16 at 3:52
Mona Jalal
7,87926108208
7,87926108208
add a comment |
add a comment |
And here a complete Java 8 streaming solution. An IntStream provides all indexes til strings half length and then a comparision from the start and from the end is done.
public static void main(String args) {
for (String testStr : Arrays.asList("testset", "none", "andna", "haah", "habh", "haaah")) {
System.out.println("testing " + testStr + " is palindrome=" + isPalindrome(testStr));
}
}
public static boolean isPalindrome(String str) {
return IntStream.range(0, str.length() / 2)
.noneMatch(i -> str.charAt(i) != str.charAt(str.length() - i - 1));
}
Output is:
testing testset is palindrome=true
testing none is palindrome=false
testing andna is palindrome=true
testing haah is palindrome=true
testing habh is palindrome=false
testing haaah is palindrome=true
Why notallMatch
withallMatch(i -> str.charAt(i) == str.charAt(str.length() - i - 1))
?
– gil.fernandes
Apr 5 '18 at 9:47
add a comment |
And here a complete Java 8 streaming solution. An IntStream provides all indexes til strings half length and then a comparision from the start and from the end is done.
public static void main(String args) {
for (String testStr : Arrays.asList("testset", "none", "andna", "haah", "habh", "haaah")) {
System.out.println("testing " + testStr + " is palindrome=" + isPalindrome(testStr));
}
}
public static boolean isPalindrome(String str) {
return IntStream.range(0, str.length() / 2)
.noneMatch(i -> str.charAt(i) != str.charAt(str.length() - i - 1));
}
Output is:
testing testset is palindrome=true
testing none is palindrome=false
testing andna is palindrome=true
testing haah is palindrome=true
testing habh is palindrome=false
testing haaah is palindrome=true
Why notallMatch
withallMatch(i -> str.charAt(i) == str.charAt(str.length() - i - 1))
?
– gil.fernandes
Apr 5 '18 at 9:47
add a comment |
And here a complete Java 8 streaming solution. An IntStream provides all indexes til strings half length and then a comparision from the start and from the end is done.
public static void main(String args) {
for (String testStr : Arrays.asList("testset", "none", "andna", "haah", "habh", "haaah")) {
System.out.println("testing " + testStr + " is palindrome=" + isPalindrome(testStr));
}
}
public static boolean isPalindrome(String str) {
return IntStream.range(0, str.length() / 2)
.noneMatch(i -> str.charAt(i) != str.charAt(str.length() - i - 1));
}
Output is:
testing testset is palindrome=true
testing none is palindrome=false
testing andna is palindrome=true
testing haah is palindrome=true
testing habh is palindrome=false
testing haaah is palindrome=true
And here a complete Java 8 streaming solution. An IntStream provides all indexes til strings half length and then a comparision from the start and from the end is done.
public static void main(String args) {
for (String testStr : Arrays.asList("testset", "none", "andna", "haah", "habh", "haaah")) {
System.out.println("testing " + testStr + " is palindrome=" + isPalindrome(testStr));
}
}
public static boolean isPalindrome(String str) {
return IntStream.range(0, str.length() / 2)
.noneMatch(i -> str.charAt(i) != str.charAt(str.length() - i - 1));
}
Output is:
testing testset is palindrome=true
testing none is palindrome=false
testing andna is palindrome=true
testing haah is palindrome=true
testing habh is palindrome=false
testing haaah is palindrome=true
answered May 2 '17 at 6:49
wumpz
4,60921522
4,60921522
Why notallMatch
withallMatch(i -> str.charAt(i) == str.charAt(str.length() - i - 1))
?
– gil.fernandes
Apr 5 '18 at 9:47
add a comment |
Why notallMatch
withallMatch(i -> str.charAt(i) == str.charAt(str.length() - i - 1))
?
– gil.fernandes
Apr 5 '18 at 9:47
Why not
allMatch
with allMatch(i -> str.charAt(i) == str.charAt(str.length() - i - 1))
?– gil.fernandes
Apr 5 '18 at 9:47
Why not
allMatch
with allMatch(i -> str.charAt(i) == str.charAt(str.length() - i - 1))
?– gil.fernandes
Apr 5 '18 at 9:47
add a comment |
Checking palindrome for first half of the string with the rest, this case assumes removal of any white spaces.
public int isPalindrome(String a) {
//Remove all spaces and non alpha characters
String ab = a.replaceAll("[^A-Za-z0-9]", "").toLowerCase();
//System.out.println(ab);
for (int i=0; i<ab.length()/2; i++) {
if(ab.charAt(i) != ab.charAt((ab.length()-1)-i)) {
return 0;
}
}
return 1;
}
add a comment |
Checking palindrome for first half of the string with the rest, this case assumes removal of any white spaces.
public int isPalindrome(String a) {
//Remove all spaces and non alpha characters
String ab = a.replaceAll("[^A-Za-z0-9]", "").toLowerCase();
//System.out.println(ab);
for (int i=0; i<ab.length()/2; i++) {
if(ab.charAt(i) != ab.charAt((ab.length()-1)-i)) {
return 0;
}
}
return 1;
}
add a comment |
Checking palindrome for first half of the string with the rest, this case assumes removal of any white spaces.
public int isPalindrome(String a) {
//Remove all spaces and non alpha characters
String ab = a.replaceAll("[^A-Za-z0-9]", "").toLowerCase();
//System.out.println(ab);
for (int i=0; i<ab.length()/2; i++) {
if(ab.charAt(i) != ab.charAt((ab.length()-1)-i)) {
return 0;
}
}
return 1;
}
Checking palindrome for first half of the string with the rest, this case assumes removal of any white spaces.
public int isPalindrome(String a) {
//Remove all spaces and non alpha characters
String ab = a.replaceAll("[^A-Za-z0-9]", "").toLowerCase();
//System.out.println(ab);
for (int i=0; i<ab.length()/2; i++) {
if(ab.charAt(i) != ab.charAt((ab.length()-1)-i)) {
return 0;
}
}
return 1;
}
answered Jun 2 '17 at 17:27
Abhilash Muthuraj
84472039
84472039
add a comment |
add a comment |
public class palindrome {
public static void main(String args) {
StringBuffer strBuf1 = new StringBuffer("malayalam");
StringBuffer strBuf2 = new StringBuffer("malayalam");
strBuf2.reverse();
System.out.println(strBuf2);
System.out.println((strBuf1.toString()).equals(strBuf2.toString()));
if ((strBuf1.toString()).equals(strBuf2.toString()))
System.out.println("palindrome");
else
System.out.println("not a palindrome");
}
}
add a comment |
public class palindrome {
public static void main(String args) {
StringBuffer strBuf1 = new StringBuffer("malayalam");
StringBuffer strBuf2 = new StringBuffer("malayalam");
strBuf2.reverse();
System.out.println(strBuf2);
System.out.println((strBuf1.toString()).equals(strBuf2.toString()));
if ((strBuf1.toString()).equals(strBuf2.toString()))
System.out.println("palindrome");
else
System.out.println("not a palindrome");
}
}
add a comment |
public class palindrome {
public static void main(String args) {
StringBuffer strBuf1 = new StringBuffer("malayalam");
StringBuffer strBuf2 = new StringBuffer("malayalam");
strBuf2.reverse();
System.out.println(strBuf2);
System.out.println((strBuf1.toString()).equals(strBuf2.toString()));
if ((strBuf1.toString()).equals(strBuf2.toString()))
System.out.println("palindrome");
else
System.out.println("not a palindrome");
}
}
public class palindrome {
public static void main(String args) {
StringBuffer strBuf1 = new StringBuffer("malayalam");
StringBuffer strBuf2 = new StringBuffer("malayalam");
strBuf2.reverse();
System.out.println(strBuf2);
System.out.println((strBuf1.toString()).equals(strBuf2.toString()));
if ((strBuf1.toString()).equals(strBuf2.toString()))
System.out.println("palindrome");
else
System.out.println("not a palindrome");
}
}
answered Feb 8 '13 at 12:50
user2039532
215
215
add a comment |
add a comment |
I worked on a solution for a question that was marked as duplicate of this one.
Might as well throw it here...
The question requested a single line to solve this, and I took it more as the literary palindrome - so spaces, punctuation and upper/lower case can throw off the result.
Here's the ugly solution with a small test class:
public class Palindrome {
public static boolean isPalendrome(String arg) {
return arg.replaceAll("[^A-Za-z]", "").equalsIgnoreCase(new StringBuilder(arg).reverse().toString().replaceAll("[^A-Za-z]", ""));
}
public static void main(String args) {
System.out.println(isPalendrome("hiya"));
System.out.println(isPalendrome("star buttons not tub rats"));
System.out.println(isPalendrome("stab nail at ill Italian bats!"));
return;
}
}
Sorry that it is kind of nasty - but the other question specified a one-liner.
1
Just curious, why the ternary operator at the end?
– typingduck
Apr 17 '17 at 16:24
Absolutely nothing - I must not have had my coffee. Will fix my response - thanks!.
– Marc
May 24 '17 at 15:51
add a comment |
I worked on a solution for a question that was marked as duplicate of this one.
Might as well throw it here...
The question requested a single line to solve this, and I took it more as the literary palindrome - so spaces, punctuation and upper/lower case can throw off the result.
Here's the ugly solution with a small test class:
public class Palindrome {
public static boolean isPalendrome(String arg) {
return arg.replaceAll("[^A-Za-z]", "").equalsIgnoreCase(new StringBuilder(arg).reverse().toString().replaceAll("[^A-Za-z]", ""));
}
public static void main(String args) {
System.out.println(isPalendrome("hiya"));
System.out.println(isPalendrome("star buttons not tub rats"));
System.out.println(isPalendrome("stab nail at ill Italian bats!"));
return;
}
}
Sorry that it is kind of nasty - but the other question specified a one-liner.
1
Just curious, why the ternary operator at the end?
– typingduck
Apr 17 '17 at 16:24
Absolutely nothing - I must not have had my coffee. Will fix my response - thanks!.
– Marc
May 24 '17 at 15:51
add a comment |
I worked on a solution for a question that was marked as duplicate of this one.
Might as well throw it here...
The question requested a single line to solve this, and I took it more as the literary palindrome - so spaces, punctuation and upper/lower case can throw off the result.
Here's the ugly solution with a small test class:
public class Palindrome {
public static boolean isPalendrome(String arg) {
return arg.replaceAll("[^A-Za-z]", "").equalsIgnoreCase(new StringBuilder(arg).reverse().toString().replaceAll("[^A-Za-z]", ""));
}
public static void main(String args) {
System.out.println(isPalendrome("hiya"));
System.out.println(isPalendrome("star buttons not tub rats"));
System.out.println(isPalendrome("stab nail at ill Italian bats!"));
return;
}
}
Sorry that it is kind of nasty - but the other question specified a one-liner.
I worked on a solution for a question that was marked as duplicate of this one.
Might as well throw it here...
The question requested a single line to solve this, and I took it more as the literary palindrome - so spaces, punctuation and upper/lower case can throw off the result.
Here's the ugly solution with a small test class:
public class Palindrome {
public static boolean isPalendrome(String arg) {
return arg.replaceAll("[^A-Za-z]", "").equalsIgnoreCase(new StringBuilder(arg).reverse().toString().replaceAll("[^A-Za-z]", ""));
}
public static void main(String args) {
System.out.println(isPalendrome("hiya"));
System.out.println(isPalendrome("star buttons not tub rats"));
System.out.println(isPalendrome("stab nail at ill Italian bats!"));
return;
}
}
Sorry that it is kind of nasty - but the other question specified a one-liner.
edited May 24 '17 at 15:52
answered Jun 3 '11 at 13:28
Marc
2,40021521
2,40021521
1
Just curious, why the ternary operator at the end?
– typingduck
Apr 17 '17 at 16:24
Absolutely nothing - I must not have had my coffee. Will fix my response - thanks!.
– Marc
May 24 '17 at 15:51
add a comment |
1
Just curious, why the ternary operator at the end?
– typingduck
Apr 17 '17 at 16:24
Absolutely nothing - I must not have had my coffee. Will fix my response - thanks!.
– Marc
May 24 '17 at 15:51
1
1
Just curious, why the ternary operator at the end?
– typingduck
Apr 17 '17 at 16:24
Just curious, why the ternary operator at the end?
– typingduck
Apr 17 '17 at 16:24
Absolutely nothing - I must not have had my coffee. Will fix my response - thanks!.
– Marc
May 24 '17 at 15:51
Absolutely nothing - I must not have had my coffee. Will fix my response - thanks!.
– Marc
May 24 '17 at 15:51
add a comment |
Amazing how many different solutions to such a simple problem exist! Here's another one.
private static boolean palindrome(String s){
String revS = "";
String checkS = s.toLowerCase();
String checkSArr = checkS.split("");
for(String e : checkSArr){
revS = e + revS;
}
return (checkS.equals(revS)) ? true : false;
}
add a comment |
Amazing how many different solutions to such a simple problem exist! Here's another one.
private static boolean palindrome(String s){
String revS = "";
String checkS = s.toLowerCase();
String checkSArr = checkS.split("");
for(String e : checkSArr){
revS = e + revS;
}
return (checkS.equals(revS)) ? true : false;
}
add a comment |
Amazing how many different solutions to such a simple problem exist! Here's another one.
private static boolean palindrome(String s){
String revS = "";
String checkS = s.toLowerCase();
String checkSArr = checkS.split("");
for(String e : checkSArr){
revS = e + revS;
}
return (checkS.equals(revS)) ? true : false;
}
Amazing how many different solutions to such a simple problem exist! Here's another one.
private static boolean palindrome(String s){
String revS = "";
String checkS = s.toLowerCase();
String checkSArr = checkS.split("");
for(String e : checkSArr){
revS = e + revS;
}
return (checkS.equals(revS)) ? true : false;
}
answered Jan 18 '18 at 16:33
Felix
442317
442317
add a comment |
add a comment |
Try this out :
import java.util.*;
public class str {
public static void main(String args)
{
Scanner in=new Scanner(System.in);
System.out.println("ENTER YOUR STRING: ");
String a=in.nextLine();
System.out.println("GIVEN STRING IS: "+a);
StringBuffer str=new StringBuffer(a);
StringBuffer str2=new StringBuffer(str.reverse());
String s2=new String(str2);
System.out.println("THE REVERSED STRING IS: "+str2);
if(a.equals(s2))
System.out.println("ITS A PALINDROME");
else
System.out.println("ITS NOT A PALINDROME");
}
}
add a comment |
Try this out :
import java.util.*;
public class str {
public static void main(String args)
{
Scanner in=new Scanner(System.in);
System.out.println("ENTER YOUR STRING: ");
String a=in.nextLine();
System.out.println("GIVEN STRING IS: "+a);
StringBuffer str=new StringBuffer(a);
StringBuffer str2=new StringBuffer(str.reverse());
String s2=new String(str2);
System.out.println("THE REVERSED STRING IS: "+str2);
if(a.equals(s2))
System.out.println("ITS A PALINDROME");
else
System.out.println("ITS NOT A PALINDROME");
}
}
add a comment |
Try this out :
import java.util.*;
public class str {
public static void main(String args)
{
Scanner in=new Scanner(System.in);
System.out.println("ENTER YOUR STRING: ");
String a=in.nextLine();
System.out.println("GIVEN STRING IS: "+a);
StringBuffer str=new StringBuffer(a);
StringBuffer str2=new StringBuffer(str.reverse());
String s2=new String(str2);
System.out.println("THE REVERSED STRING IS: "+str2);
if(a.equals(s2))
System.out.println("ITS A PALINDROME");
else
System.out.println("ITS NOT A PALINDROME");
}
}
Try this out :
import java.util.*;
public class str {
public static void main(String args)
{
Scanner in=new Scanner(System.in);
System.out.println("ENTER YOUR STRING: ");
String a=in.nextLine();
System.out.println("GIVEN STRING IS: "+a);
StringBuffer str=new StringBuffer(a);
StringBuffer str2=new StringBuffer(str.reverse());
String s2=new String(str2);
System.out.println("THE REVERSED STRING IS: "+str2);
if(a.equals(s2))
System.out.println("ITS A PALINDROME");
else
System.out.println("ITS NOT A PALINDROME");
}
}
edited Mar 12 '13 at 7:29
wizzardz
3,40743157
3,40743157
answered Mar 12 '13 at 7:19
ARAVIN
112
112
add a comment |
add a comment |
I'm new to java and I'm taking up your question as a challenge to improve my knowledge.
import java.util.ArrayList;
import java.util.List;
public class PalindromeRecursiveBoolean {
public static boolean isPalindrome(String str) {
str = str.toUpperCase();
char strChars = str.toCharArray();
List<Character> word = new ArrayList<>();
for (char c : strChars) {
word.add(c);
}
while (true) {
if ((word.size() == 1) || (word.size() == 0)) {
return true;
}
if (word.get(0) == word.get(word.size() - 1)) {
word.remove(0);
word.remove(word.size() - 1);
} else {
return false;
}
}
}
}
- If the string is made of no letters or just one letter, it is a
palindrome. - Otherwise, compare the first and last letters of the string.
- If the first and last letters differ, then the string is not a palindrome
- Otherwise, the first and last letters are the same. Strip them from the string, and determine whether the string that remains is a palindrome. Take the answer for this smaller string and use it as the answer for the original string then repeat from 1.
add a comment |
I'm new to java and I'm taking up your question as a challenge to improve my knowledge.
import java.util.ArrayList;
import java.util.List;
public class PalindromeRecursiveBoolean {
public static boolean isPalindrome(String str) {
str = str.toUpperCase();
char strChars = str.toCharArray();
List<Character> word = new ArrayList<>();
for (char c : strChars) {
word.add(c);
}
while (true) {
if ((word.size() == 1) || (word.size() == 0)) {
return true;
}
if (word.get(0) == word.get(word.size() - 1)) {
word.remove(0);
word.remove(word.size() - 1);
} else {
return false;
}
}
}
}
- If the string is made of no letters or just one letter, it is a
palindrome. - Otherwise, compare the first and last letters of the string.
- If the first and last letters differ, then the string is not a palindrome
- Otherwise, the first and last letters are the same. Strip them from the string, and determine whether the string that remains is a palindrome. Take the answer for this smaller string and use it as the answer for the original string then repeat from 1.
add a comment |
I'm new to java and I'm taking up your question as a challenge to improve my knowledge.
import java.util.ArrayList;
import java.util.List;
public class PalindromeRecursiveBoolean {
public static boolean isPalindrome(String str) {
str = str.toUpperCase();
char strChars = str.toCharArray();
List<Character> word = new ArrayList<>();
for (char c : strChars) {
word.add(c);
}
while (true) {
if ((word.size() == 1) || (word.size() == 0)) {
return true;
}
if (word.get(0) == word.get(word.size() - 1)) {
word.remove(0);
word.remove(word.size() - 1);
} else {
return false;
}
}
}
}
- If the string is made of no letters or just one letter, it is a
palindrome. - Otherwise, compare the first and last letters of the string.
- If the first and last letters differ, then the string is not a palindrome
- Otherwise, the first and last letters are the same. Strip them from the string, and determine whether the string that remains is a palindrome. Take the answer for this smaller string and use it as the answer for the original string then repeat from 1.
I'm new to java and I'm taking up your question as a challenge to improve my knowledge.
import java.util.ArrayList;
import java.util.List;
public class PalindromeRecursiveBoolean {
public static boolean isPalindrome(String str) {
str = str.toUpperCase();
char strChars = str.toCharArray();
List<Character> word = new ArrayList<>();
for (char c : strChars) {
word.add(c);
}
while (true) {
if ((word.size() == 1) || (word.size() == 0)) {
return true;
}
if (word.get(0) == word.get(word.size() - 1)) {
word.remove(0);
word.remove(word.size() - 1);
} else {
return false;
}
}
}
}
- If the string is made of no letters or just one letter, it is a
palindrome. - Otherwise, compare the first and last letters of the string.
- If the first and last letters differ, then the string is not a palindrome
- Otherwise, the first and last letters are the same. Strip them from the string, and determine whether the string that remains is a palindrome. Take the answer for this smaller string and use it as the answer for the original string then repeat from 1.
answered Dec 16 '14 at 2:08
gogobebe2
82214
82214
add a comment |
add a comment |
public boolean isPalindrome(String abc){
if(abc != null && abc.length() > 0){
char arr = abc.toCharArray();
for (int i = 0; i < arr.length/2; i++) {
if(arr[i] != arr[arr.length - 1 - i]){
return false;
}
}
return true;
}
return false;
}
add a comment |
public boolean isPalindrome(String abc){
if(abc != null && abc.length() > 0){
char arr = abc.toCharArray();
for (int i = 0; i < arr.length/2; i++) {
if(arr[i] != arr[arr.length - 1 - i]){
return false;
}
}
return true;
}
return false;
}
add a comment |
public boolean isPalindrome(String abc){
if(abc != null && abc.length() > 0){
char arr = abc.toCharArray();
for (int i = 0; i < arr.length/2; i++) {
if(arr[i] != arr[arr.length - 1 - i]){
return false;
}
}
return true;
}
return false;
}
public boolean isPalindrome(String abc){
if(abc != null && abc.length() > 0){
char arr = abc.toCharArray();
for (int i = 0; i < arr.length/2; i++) {
if(arr[i] != arr[arr.length - 1 - i]){
return false;
}
}
return true;
}
return false;
}
answered May 28 '15 at 23:58
Amandeep Dhanjal
435
435
add a comment |
add a comment |
Another way is using char Array
public class Palindrome {
public static void main(String args) {
String str = "madam";
if(isPalindrome(str)) {
System.out.println("Palindrome");
} else {
System.out.println("Not a Palindrome");
}
}
private static boolean isPalindrome(String str) {
// Convert String to char array
char charArray = str.toCharArray();
for(int i=0; i < str.length(); i++) {
if(charArray[i] != charArray[(str.length()-1) - i]) {
return false;
}
}
return true;
}
}
1
This approach is excellent. Time Complexity O(n), space Complexity O(1)
– kanaparthikiran
Jan 1 '18 at 4:06
add a comment |
Another way is using char Array
public class Palindrome {
public static void main(String args) {
String str = "madam";
if(isPalindrome(str)) {
System.out.println("Palindrome");
} else {
System.out.println("Not a Palindrome");
}
}
private static boolean isPalindrome(String str) {
// Convert String to char array
char charArray = str.toCharArray();
for(int i=0; i < str.length(); i++) {
if(charArray[i] != charArray[(str.length()-1) - i]) {
return false;
}
}
return true;
}
}
1
This approach is excellent. Time Complexity O(n), space Complexity O(1)
– kanaparthikiran
Jan 1 '18 at 4:06
add a comment |
Another way is using char Array
public class Palindrome {
public static void main(String args) {
String str = "madam";
if(isPalindrome(str)) {
System.out.println("Palindrome");
} else {
System.out.println("Not a Palindrome");
}
}
private static boolean isPalindrome(String str) {
// Convert String to char array
char charArray = str.toCharArray();
for(int i=0; i < str.length(); i++) {
if(charArray[i] != charArray[(str.length()-1) - i]) {
return false;
}
}
return true;
}
}
Another way is using char Array
public class Palindrome {
public static void main(String args) {
String str = "madam";
if(isPalindrome(str)) {
System.out.println("Palindrome");
} else {
System.out.println("Not a Palindrome");
}
}
private static boolean isPalindrome(String str) {
// Convert String to char array
char charArray = str.toCharArray();
for(int i=0; i < str.length(); i++) {
if(charArray[i] != charArray[(str.length()-1) - i]) {
return false;
}
}
return true;
}
}
answered Jun 24 '15 at 11:18
Madura Harshana
81662036
81662036
1
This approach is excellent. Time Complexity O(n), space Complexity O(1)
– kanaparthikiran
Jan 1 '18 at 4:06
add a comment |
1
This approach is excellent. Time Complexity O(n), space Complexity O(1)
– kanaparthikiran
Jan 1 '18 at 4:06
1
1
This approach is excellent. Time Complexity O(n), space Complexity O(1)
– kanaparthikiran
Jan 1 '18 at 4:06
This approach is excellent. Time Complexity O(n), space Complexity O(1)
– kanaparthikiran
Jan 1 '18 at 4:06
add a comment |
Here my analysis of the @Greg answer: componentsprogramming.com/palindromes
Sidenote: But, for me it is important to do it in a Generic way.
The requirements are that the sequence is bidirectionally iterable and the elements of the sequence are comparables using equality.
I don't know how to do it in Java, but, here is a C++ version, I don't know a better way to do it for bidirectional sequences.
template <BidirectionalIterator I>
requires( EqualityComparable< ValueType<I> > )
bool palindrome( I first, I last )
{
I m = middle(first, last);
auto rfirst = boost::make_reverse_iterator(last);
return std::equal(first, m, rfirst);
}
Complexity: linear-time,
If I is RandomAccessIterator:
floor(n/2) comparissons and floor(n/2)*2 iterationsIf I is BidirectionalIterator:
floor(n/2) comparissons and floor(n/2)*2 iterations
plus (3/2)*n iterations to find the middle ( middle function )storage: O(1)
No dymamic allocated memory
add a comment |
Here my analysis of the @Greg answer: componentsprogramming.com/palindromes
Sidenote: But, for me it is important to do it in a Generic way.
The requirements are that the sequence is bidirectionally iterable and the elements of the sequence are comparables using equality.
I don't know how to do it in Java, but, here is a C++ version, I don't know a better way to do it for bidirectional sequences.
template <BidirectionalIterator I>
requires( EqualityComparable< ValueType<I> > )
bool palindrome( I first, I last )
{
I m = middle(first, last);
auto rfirst = boost::make_reverse_iterator(last);
return std::equal(first, m, rfirst);
}
Complexity: linear-time,
If I is RandomAccessIterator:
floor(n/2) comparissons and floor(n/2)*2 iterationsIf I is BidirectionalIterator:
floor(n/2) comparissons and floor(n/2)*2 iterations
plus (3/2)*n iterations to find the middle ( middle function )storage: O(1)
No dymamic allocated memory
add a comment |
Here my analysis of the @Greg answer: componentsprogramming.com/palindromes
Sidenote: But, for me it is important to do it in a Generic way.
The requirements are that the sequence is bidirectionally iterable and the elements of the sequence are comparables using equality.
I don't know how to do it in Java, but, here is a C++ version, I don't know a better way to do it for bidirectional sequences.
template <BidirectionalIterator I>
requires( EqualityComparable< ValueType<I> > )
bool palindrome( I first, I last )
{
I m = middle(first, last);
auto rfirst = boost::make_reverse_iterator(last);
return std::equal(first, m, rfirst);
}
Complexity: linear-time,
If I is RandomAccessIterator:
floor(n/2) comparissons and floor(n/2)*2 iterationsIf I is BidirectionalIterator:
floor(n/2) comparissons and floor(n/2)*2 iterations
plus (3/2)*n iterations to find the middle ( middle function )storage: O(1)
No dymamic allocated memory
Here my analysis of the @Greg answer: componentsprogramming.com/palindromes
Sidenote: But, for me it is important to do it in a Generic way.
The requirements are that the sequence is bidirectionally iterable and the elements of the sequence are comparables using equality.
I don't know how to do it in Java, but, here is a C++ version, I don't know a better way to do it for bidirectional sequences.
template <BidirectionalIterator I>
requires( EqualityComparable< ValueType<I> > )
bool palindrome( I first, I last )
{
I m = middle(first, last);
auto rfirst = boost::make_reverse_iterator(last);
return std::equal(first, m, rfirst);
}
Complexity: linear-time,
If I is RandomAccessIterator:
floor(n/2) comparissons and floor(n/2)*2 iterationsIf I is BidirectionalIterator:
floor(n/2) comparissons and floor(n/2)*2 iterations
plus (3/2)*n iterations to find the middle ( middle function )storage: O(1)
No dymamic allocated memory
answered Nov 14 '16 at 14:28
Fernando Pelliccioni
595614
595614
add a comment |
add a comment |
Recently I wrote a palindrome program which doesn't use StringBuilder. A late answer but this might come in handy to some people.
public boolean isPalindrome(String value) {
boolean isPalindrome = true;
for (int i = 0 , j = value.length() - 1 ; i < j ; i ++ , j --) {
if (value.charAt(i) != value.charAt(j)) {
isPalindrome = false;
}
}
return isPalindrome;
}
add a comment |
Recently I wrote a palindrome program which doesn't use StringBuilder. A late answer but this might come in handy to some people.
public boolean isPalindrome(String value) {
boolean isPalindrome = true;
for (int i = 0 , j = value.length() - 1 ; i < j ; i ++ , j --) {
if (value.charAt(i) != value.charAt(j)) {
isPalindrome = false;
}
}
return isPalindrome;
}
add a comment |
Recently I wrote a palindrome program which doesn't use StringBuilder. A late answer but this might come in handy to some people.
public boolean isPalindrome(String value) {
boolean isPalindrome = true;
for (int i = 0 , j = value.length() - 1 ; i < j ; i ++ , j --) {
if (value.charAt(i) != value.charAt(j)) {
isPalindrome = false;
}
}
return isPalindrome;
}
Recently I wrote a palindrome program which doesn't use StringBuilder. A late answer but this might come in handy to some people.
public boolean isPalindrome(String value) {
boolean isPalindrome = true;
for (int i = 0 , j = value.length() - 1 ; i < j ; i ++ , j --) {
if (value.charAt(i) != value.charAt(j)) {
isPalindrome = false;
}
}
return isPalindrome;
}
answered Apr 20 '17 at 6:56
capt.swag
5,98212425
5,98212425
add a comment |
add a comment |
Using stack, it can be done like this
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
import java.util.*;
public class Solution {
public static void main(String args) {
Scanner in = new Scanner(System.in);
String str=in.nextLine();
str.replaceAll("\s+","");
//System.out.println(str);
Stack<String> stack=new Stack<String>();
stack.push(str);
String str_rev=stack.pop();
if(str.equals(str_rev)){
System.out.println("Palindrome");
}else{
System.out.println("Not Palindrome");
}
}
}
thanks! can you explain the code ??
– danny
Apr 28 '17 at 11:14
as you must be knowing that, stack is of LIFO type that means you are basically pushing data through the beginning of the stack and retrieving data from the end of stack using pop(). Hope this helps!
– aayushi
May 16 '17 at 19:42
add a comment |
Using stack, it can be done like this
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
import java.util.*;
public class Solution {
public static void main(String args) {
Scanner in = new Scanner(System.in);
String str=in.nextLine();
str.replaceAll("\s+","");
//System.out.println(str);
Stack<String> stack=new Stack<String>();
stack.push(str);
String str_rev=stack.pop();
if(str.equals(str_rev)){
System.out.println("Palindrome");
}else{
System.out.println("Not Palindrome");
}
}
}
thanks! can you explain the code ??
– danny
Apr 28 '17 at 11:14
as you must be knowing that, stack is of LIFO type that means you are basically pushing data through the beginning of the stack and retrieving data from the end of stack using pop(). Hope this helps!
– aayushi
May 16 '17 at 19:42
add a comment |
Using stack, it can be done like this
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
import java.util.*;
public class Solution {
public static void main(String args) {
Scanner in = new Scanner(System.in);
String str=in.nextLine();
str.replaceAll("\s+","");
//System.out.println(str);
Stack<String> stack=new Stack<String>();
stack.push(str);
String str_rev=stack.pop();
if(str.equals(str_rev)){
System.out.println("Palindrome");
}else{
System.out.println("Not Palindrome");
}
}
}
Using stack, it can be done like this
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
import java.util.*;
public class Solution {
public static void main(String args) {
Scanner in = new Scanner(System.in);
String str=in.nextLine();
str.replaceAll("\s+","");
//System.out.println(str);
Stack<String> stack=new Stack<String>();
stack.push(str);
String str_rev=stack.pop();
if(str.equals(str_rev)){
System.out.println("Palindrome");
}else{
System.out.println("Not Palindrome");
}
}
}
answered Apr 20 '17 at 7:24
aayushi
15627
15627
thanks! can you explain the code ??
– danny
Apr 28 '17 at 11:14
as you must be knowing that, stack is of LIFO type that means you are basically pushing data through the beginning of the stack and retrieving data from the end of stack using pop(). Hope this helps!
– aayushi
May 16 '17 at 19:42
add a comment |
thanks! can you explain the code ??
– danny
Apr 28 '17 at 11:14
as you must be knowing that, stack is of LIFO type that means you are basically pushing data through the beginning of the stack and retrieving data from the end of stack using pop(). Hope this helps!
– aayushi
May 16 '17 at 19:42
thanks! can you explain the code ??
– danny
Apr 28 '17 at 11:14
thanks! can you explain the code ??
– danny
Apr 28 '17 at 11:14
as you must be knowing that, stack is of LIFO type that means you are basically pushing data through the beginning of the stack and retrieving data from the end of stack using pop(). Hope this helps!
– aayushi
May 16 '17 at 19:42
as you must be knowing that, stack is of LIFO type that means you are basically pushing data through the beginning of the stack and retrieving data from the end of stack using pop(). Hope this helps!
– aayushi
May 16 '17 at 19:42
add a comment |
public static boolean isPalindrome(String word) {
String str = "";
for (int i=word.length()-1; i>=0; i--){
str = str + word.charAt(i);
}
if(str.equalsIgnoreCase(word)){
return true;
}else{
return false;
}
}
add a comment |
public static boolean isPalindrome(String word) {
String str = "";
for (int i=word.length()-1; i>=0; i--){
str = str + word.charAt(i);
}
if(str.equalsIgnoreCase(word)){
return true;
}else{
return false;
}
}
add a comment |
public static boolean isPalindrome(String word) {
String str = "";
for (int i=word.length()-1; i>=0; i--){
str = str + word.charAt(i);
}
if(str.equalsIgnoreCase(word)){
return true;
}else{
return false;
}
}
public static boolean isPalindrome(String word) {
String str = "";
for (int i=word.length()-1; i>=0; i--){
str = str + word.charAt(i);
}
if(str.equalsIgnoreCase(word)){
return true;
}else{
return false;
}
}
answered May 26 '17 at 12:33
Chandara Chea
514
514
add a comment |
add a comment |
- This implementation works for numbers and strings.
- Since we are not writing anything, so there is no need to convert the string into the character array.
public static boolean isPalindrome(Object obj)
{
String s = String.valueOf(obj);
for(int left=0, right=s.length()-1; left < right; left++,right--)
{
if(s.charAt(left++) != s.charAt(right--))
return false;
}
return true;
}
add a comment |
- This implementation works for numbers and strings.
- Since we are not writing anything, so there is no need to convert the string into the character array.
public static boolean isPalindrome(Object obj)
{
String s = String.valueOf(obj);
for(int left=0, right=s.length()-1; left < right; left++,right--)
{
if(s.charAt(left++) != s.charAt(right--))
return false;
}
return true;
}
add a comment |
- This implementation works for numbers and strings.
- Since we are not writing anything, so there is no need to convert the string into the character array.
public static boolean isPalindrome(Object obj)
{
String s = String.valueOf(obj);
for(int left=0, right=s.length()-1; left < right; left++,right--)
{
if(s.charAt(left++) != s.charAt(right--))
return false;
}
return true;
}
- This implementation works for numbers and strings.
- Since we are not writing anything, so there is no need to convert the string into the character array.
public static boolean isPalindrome(Object obj)
{
String s = String.valueOf(obj);
for(int left=0, right=s.length()-1; left < right; left++,right--)
{
if(s.charAt(left++) != s.charAt(right--))
return false;
}
return true;
}
edited Dec 2 '18 at 4:15
answered Dec 2 '18 at 4:06
Pratik Patil
1,8751424
1,8751424
add a comment |
add a comment |
import java.util.Scanner;
public class Palindrom {
public static void main(String args)
{
Scanner in = new Scanner(System.in);
String str= in.nextLine();
int x= str.length();
if(x%2!=0)
{
for(int i=0;i<x/2;i++)
{
if(str.charAt(i)==str.charAt(x-1-i))
{
continue;
}
else
{
System.out.println("String is not a palindrom");
break;
}
}
}
else
{
for(int i=0;i<=x/2;i++)
{
if(str.charAt(i)==str.charAt(x-1-i))
{
continue;
}
else
{
System.out.println("String is not a palindrom");
break;
}
}
}
}
}
add a comment |
import java.util.Scanner;
public class Palindrom {
public static void main(String args)
{
Scanner in = new Scanner(System.in);
String str= in.nextLine();
int x= str.length();
if(x%2!=0)
{
for(int i=0;i<x/2;i++)
{
if(str.charAt(i)==str.charAt(x-1-i))
{
continue;
}
else
{
System.out.println("String is not a palindrom");
break;
}
}
}
else
{
for(int i=0;i<=x/2;i++)
{
if(str.charAt(i)==str.charAt(x-1-i))
{
continue;
}
else
{
System.out.println("String is not a palindrom");
break;
}
}
}
}
}
add a comment |
import java.util.Scanner;
public class Palindrom {
public static void main(String args)
{
Scanner in = new Scanner(System.in);
String str= in.nextLine();
int x= str.length();
if(x%2!=0)
{
for(int i=0;i<x/2;i++)
{
if(str.charAt(i)==str.charAt(x-1-i))
{
continue;
}
else
{
System.out.println("String is not a palindrom");
break;
}
}
}
else
{
for(int i=0;i<=x/2;i++)
{
if(str.charAt(i)==str.charAt(x-1-i))
{
continue;
}
else
{
System.out.println("String is not a palindrom");
break;
}
}
}
}
}
import java.util.Scanner;
public class Palindrom {
public static void main(String args)
{
Scanner in = new Scanner(System.in);
String str= in.nextLine();
int x= str.length();
if(x%2!=0)
{
for(int i=0;i<x/2;i++)
{
if(str.charAt(i)==str.charAt(x-1-i))
{
continue;
}
else
{
System.out.println("String is not a palindrom");
break;
}
}
}
else
{
for(int i=0;i<=x/2;i++)
{
if(str.charAt(i)==str.charAt(x-1-i))
{
continue;
}
else
{
System.out.println("String is not a palindrom");
break;
}
}
}
}
}
edited May 26 '16 at 3:53
Mona Jalal
7,87926108208
7,87926108208
answered Dec 4 '15 at 5:14
Nitesh
4629
4629
add a comment |
add a comment |
private static boolean isPalindrome(String word) {
int z = word.length();
boolean isPalindrome = false;
for (int i = 0; i <= word.length() / 2; i++) {
if (word.charAt(i) == word.charAt(--z)) {
isPalindrome = true;
}
}
return isPalindrome;
}
add a comment |
private static boolean isPalindrome(String word) {
int z = word.length();
boolean isPalindrome = false;
for (int i = 0; i <= word.length() / 2; i++) {
if (word.charAt(i) == word.charAt(--z)) {
isPalindrome = true;
}
}
return isPalindrome;
}
add a comment |
private static boolean isPalindrome(String word) {
int z = word.length();
boolean isPalindrome = false;
for (int i = 0; i <= word.length() / 2; i++) {
if (word.charAt(i) == word.charAt(--z)) {
isPalindrome = true;
}
}
return isPalindrome;
}
private static boolean isPalindrome(String word) {
int z = word.length();
boolean isPalindrome = false;
for (int i = 0; i <= word.length() / 2; i++) {
if (word.charAt(i) == word.charAt(--z)) {
isPalindrome = true;
}
}
return isPalindrome;
}
answered Oct 24 '16 at 7:43
Angela Sanchez
1351112
1351112
add a comment |
add a comment |
I was looking for a solution that not only worked for palindromes like...
- "Kayak"
- "Madam"
...but as well for...
- "A man, a plan, a canal, Panama!"
- "Was it a car or a cat I saw?"
- "No 'x' in Nixon"
Iterative: This has be proven as a good solution.
private boolean isPalindromeIterative(final String string)
{
final char characters =
string.replaceAll("[\W]", "").toLowerCase().toCharArray();
int iteratorLeft = 0;
int iteratorEnd = characters.length - 1;
while (iteratorEnd > iteratorLeft)
{
if (characters[iteratorLeft++] != characters[iteratorEnd--])
{
return false;
}
}
return true;
}
Recursive. I think this solution shouldn't be much worse than the iterative one. Is a little bit crapy we need to extract the cleaning step out of the method to avoid unnecesary procesing.
private boolean isPalindromeRecursive(final String string)
{
final String cleanString = string.replaceAll("[\W]", "").toLowerCase();
return isPalindromeRecursiveRecursion(cleanString);
}
private boolean isPalindromeRecursiveRecursion(final String cleanString)
{
final int cleanStringLength = cleanString.length();
return cleanStringLength <= 1 || cleanString.charAt(0) ==
cleanString.charAt(cleanStringLength - 1) &&
isPalindromeRecursiveRecursion
(cleanString.substring(1, cleanStringLength - 1));
}
Reversing: This has been proved as a expensive solution.
private boolean isPalindromeReversing(final String string)
{
final String cleanString = string.replaceAll("[\W]", "").toLowerCase();
return cleanString.equals(new StringBuilder(cleanString).reverse().toString());
}
All the credits to the guys answering in this post and bringing light to the topic.
add a comment |
I was looking for a solution that not only worked for palindromes like...
- "Kayak"
- "Madam"
...but as well for...
- "A man, a plan, a canal, Panama!"
- "Was it a car or a cat I saw?"
- "No 'x' in Nixon"
Iterative: This has be proven as a good solution.
private boolean isPalindromeIterative(final String string)
{
final char characters =
string.replaceAll("[\W]", "").toLowerCase().toCharArray();
int iteratorLeft = 0;
int iteratorEnd = characters.length - 1;
while (iteratorEnd > iteratorLeft)
{
if (characters[iteratorLeft++] != characters[iteratorEnd--])
{
return false;
}
}
return true;
}
Recursive. I think this solution shouldn't be much worse than the iterative one. Is a little bit crapy we need to extract the cleaning step out of the method to avoid unnecesary procesing.
private boolean isPalindromeRecursive(final String string)
{
final String cleanString = string.replaceAll("[\W]", "").toLowerCase();
return isPalindromeRecursiveRecursion(cleanString);
}
private boolean isPalindromeRecursiveRecursion(final String cleanString)
{
final int cleanStringLength = cleanString.length();
return cleanStringLength <= 1 || cleanString.charAt(0) ==
cleanString.charAt(cleanStringLength - 1) &&
isPalindromeRecursiveRecursion
(cleanString.substring(1, cleanStringLength - 1));
}
Reversing: This has been proved as a expensive solution.
private boolean isPalindromeReversing(final String string)
{
final String cleanString = string.replaceAll("[\W]", "").toLowerCase();
return cleanString.equals(new StringBuilder(cleanString).reverse().toString());
}
All the credits to the guys answering in this post and bringing light to the topic.
add a comment |
I was looking for a solution that not only worked for palindromes like...
- "Kayak"
- "Madam"
...but as well for...
- "A man, a plan, a canal, Panama!"
- "Was it a car or a cat I saw?"
- "No 'x' in Nixon"
Iterative: This has be proven as a good solution.
private boolean isPalindromeIterative(final String string)
{
final char characters =
string.replaceAll("[\W]", "").toLowerCase().toCharArray();
int iteratorLeft = 0;
int iteratorEnd = characters.length - 1;
while (iteratorEnd > iteratorLeft)
{
if (characters[iteratorLeft++] != characters[iteratorEnd--])
{
return false;
}
}
return true;
}
Recursive. I think this solution shouldn't be much worse than the iterative one. Is a little bit crapy we need to extract the cleaning step out of the method to avoid unnecesary procesing.
private boolean isPalindromeRecursive(final String string)
{
final String cleanString = string.replaceAll("[\W]", "").toLowerCase();
return isPalindromeRecursiveRecursion(cleanString);
}
private boolean isPalindromeRecursiveRecursion(final String cleanString)
{
final int cleanStringLength = cleanString.length();
return cleanStringLength <= 1 || cleanString.charAt(0) ==
cleanString.charAt(cleanStringLength - 1) &&
isPalindromeRecursiveRecursion
(cleanString.substring(1, cleanStringLength - 1));
}
Reversing: This has been proved as a expensive solution.
private boolean isPalindromeReversing(final String string)
{
final String cleanString = string.replaceAll("[\W]", "").toLowerCase();
return cleanString.equals(new StringBuilder(cleanString).reverse().toString());
}
All the credits to the guys answering in this post and bringing light to the topic.
I was looking for a solution that not only worked for palindromes like...
- "Kayak"
- "Madam"
...but as well for...
- "A man, a plan, a canal, Panama!"
- "Was it a car or a cat I saw?"
- "No 'x' in Nixon"
Iterative: This has be proven as a good solution.
private boolean isPalindromeIterative(final String string)
{
final char characters =
string.replaceAll("[\W]", "").toLowerCase().toCharArray();
int iteratorLeft = 0;
int iteratorEnd = characters.length - 1;
while (iteratorEnd > iteratorLeft)
{
if (characters[iteratorLeft++] != characters[iteratorEnd--])
{
return false;
}
}
return true;
}
Recursive. I think this solution shouldn't be much worse than the iterative one. Is a little bit crapy we need to extract the cleaning step out of the method to avoid unnecesary procesing.
private boolean isPalindromeRecursive(final String string)
{
final String cleanString = string.replaceAll("[\W]", "").toLowerCase();
return isPalindromeRecursiveRecursion(cleanString);
}
private boolean isPalindromeRecursiveRecursion(final String cleanString)
{
final int cleanStringLength = cleanString.length();
return cleanStringLength <= 1 || cleanString.charAt(0) ==
cleanString.charAt(cleanStringLength - 1) &&
isPalindromeRecursiveRecursion
(cleanString.substring(1, cleanStringLength - 1));
}
Reversing: This has been proved as a expensive solution.
private boolean isPalindromeReversing(final String string)
{
final String cleanString = string.replaceAll("[\W]", "").toLowerCase();
return cleanString.equals(new StringBuilder(cleanString).reverse().toString());
}
All the credits to the guys answering in this post and bringing light to the topic.
answered Oct 24 '16 at 15:51
Sotti
10.6k23839
10.6k23839
add a comment |
add a comment |
Considering not letters in the words
public static boolean palindromeWords(String s ){
int left=0;
int right=s.length()-1;
while(left<=right){
while(left<right && !Character.isLetter(s.charAt(left))){
left++;
}
while(right>0 && !Character.isLetter(s.charAt(right))){
right--;
}
if((s.charAt(left++))!=(s.charAt(right--))){
return false;
}
}
return true;
}
———
@Test
public void testPalindromeWords(){
assertTrue(StringExercise.palindromeWords("ece"));
assertTrue(StringExercise.palindromeWords("kavak"));
assertFalse(StringExercise.palindromeWords("kavakdf"));
assertTrue(StringExercise.palindromeWords("akka"));
assertTrue(StringExercise.palindromeWords("??e@@c_--e"));
}
add a comment |
Considering not letters in the words
public static boolean palindromeWords(String s ){
int left=0;
int right=s.length()-1;
while(left<=right){
while(left<right && !Character.isLetter(s.charAt(left))){
left++;
}
while(right>0 && !Character.isLetter(s.charAt(right))){
right--;
}
if((s.charAt(left++))!=(s.charAt(right--))){
return false;
}
}
return true;
}
———
@Test
public void testPalindromeWords(){
assertTrue(StringExercise.palindromeWords("ece"));
assertTrue(StringExercise.palindromeWords("kavak"));
assertFalse(StringExercise.palindromeWords("kavakdf"));
assertTrue(StringExercise.palindromeWords("akka"));
assertTrue(StringExercise.palindromeWords("??e@@c_--e"));
}
add a comment |
Considering not letters in the words
public static boolean palindromeWords(String s ){
int left=0;
int right=s.length()-1;
while(left<=right){
while(left<right && !Character.isLetter(s.charAt(left))){
left++;
}
while(right>0 && !Character.isLetter(s.charAt(right))){
right--;
}
if((s.charAt(left++))!=(s.charAt(right--))){
return false;
}
}
return true;
}
———
@Test
public void testPalindromeWords(){
assertTrue(StringExercise.palindromeWords("ece"));
assertTrue(StringExercise.palindromeWords("kavak"));
assertFalse(StringExercise.palindromeWords("kavakdf"));
assertTrue(StringExercise.palindromeWords("akka"));
assertTrue(StringExercise.palindromeWords("??e@@c_--e"));
}
Considering not letters in the words
public static boolean palindromeWords(String s ){
int left=0;
int right=s.length()-1;
while(left<=right){
while(left<right && !Character.isLetter(s.charAt(left))){
left++;
}
while(right>0 && !Character.isLetter(s.charAt(right))){
right--;
}
if((s.charAt(left++))!=(s.charAt(right--))){
return false;
}
}
return true;
}
———
@Test
public void testPalindromeWords(){
assertTrue(StringExercise.palindromeWords("ece"));
assertTrue(StringExercise.palindromeWords("kavak"));
assertFalse(StringExercise.palindromeWords("kavakdf"));
assertTrue(StringExercise.palindromeWords("akka"));
assertTrue(StringExercise.palindromeWords("??e@@c_--e"));
}
answered Dec 8 '16 at 7:44
huseyin
8701012
8701012
add a comment |
add a comment |
Here you can check palindrome a number of String dynamically
import java.util.Scanner;
public class Checkpalindrome {
public static void main(String args) {
String original, reverse = "";
Scanner in = new Scanner(System.in);
System.out.println("Enter How Many number of Input you want : ");
int numOfInt = in.nextInt();
original = in.nextLine();
do {
if (numOfInt == 0) {
System.out.println("Your Input Conplete");
}
else {
System.out.println("Enter a string to check palindrome");
original = in.nextLine();
StringBuffer buffer = new StringBuffer(original);
reverse = buffer.reverse().toString();
if (original.equalsIgnoreCase(reverse)) {
System.out.println("The entered string is Palindrome:"+reverse);
}
else {
System.out.println("The entered string is not Palindrome:"+reverse);
}
}
numOfInt--;
} while (numOfInt >= 0);
}
}
add a comment |
Here you can check palindrome a number of String dynamically
import java.util.Scanner;
public class Checkpalindrome {
public static void main(String args) {
String original, reverse = "";
Scanner in = new Scanner(System.in);
System.out.println("Enter How Many number of Input you want : ");
int numOfInt = in.nextInt();
original = in.nextLine();
do {
if (numOfInt == 0) {
System.out.println("Your Input Conplete");
}
else {
System.out.println("Enter a string to check palindrome");
original = in.nextLine();
StringBuffer buffer = new StringBuffer(original);
reverse = buffer.reverse().toString();
if (original.equalsIgnoreCase(reverse)) {
System.out.println("The entered string is Palindrome:"+reverse);
}
else {
System.out.println("The entered string is not Palindrome:"+reverse);
}
}
numOfInt--;
} while (numOfInt >= 0);
}
}
add a comment |
Here you can check palindrome a number of String dynamically
import java.util.Scanner;
public class Checkpalindrome {
public static void main(String args) {
String original, reverse = "";
Scanner in = new Scanner(System.in);
System.out.println("Enter How Many number of Input you want : ");
int numOfInt = in.nextInt();
original = in.nextLine();
do {
if (numOfInt == 0) {
System.out.println("Your Input Conplete");
}
else {
System.out.println("Enter a string to check palindrome");
original = in.nextLine();
StringBuffer buffer = new StringBuffer(original);
reverse = buffer.reverse().toString();
if (original.equalsIgnoreCase(reverse)) {
System.out.println("The entered string is Palindrome:"+reverse);
}
else {
System.out.println("The entered string is not Palindrome:"+reverse);
}
}
numOfInt--;
} while (numOfInt >= 0);
}
}
Here you can check palindrome a number of String dynamically
import java.util.Scanner;
public class Checkpalindrome {
public static void main(String args) {
String original, reverse = "";
Scanner in = new Scanner(System.in);
System.out.println("Enter How Many number of Input you want : ");
int numOfInt = in.nextInt();
original = in.nextLine();
do {
if (numOfInt == 0) {
System.out.println("Your Input Conplete");
}
else {
System.out.println("Enter a string to check palindrome");
original = in.nextLine();
StringBuffer buffer = new StringBuffer(original);
reverse = buffer.reverse().toString();
if (original.equalsIgnoreCase(reverse)) {
System.out.println("The entered string is Palindrome:"+reverse);
}
else {
System.out.println("The entered string is not Palindrome:"+reverse);
}
}
numOfInt--;
} while (numOfInt >= 0);
}
}
edited Dec 23 '16 at 17:48
answered Dec 23 '16 at 17:43
Md. Nasir Uddin
257
257
add a comment |
add a comment |
IMO, the recursive way is the simplest and clearest.
public static boolean isPal(String s)
{
if(s.length() == 0 || s.length() == 1)
return true;
if(s.charAt(0) == s.charAt(s.length()-1))
return isPal(s.substring(1, s.length()-1));
return false;
}
2
This already has been used in an answer: Check string for palindrome (just a note)
– Tom
Jan 8 '17 at 22:00
sorry, I missed it.
– john Smith
Jan 9 '17 at 13:48
add a comment |
IMO, the recursive way is the simplest and clearest.
public static boolean isPal(String s)
{
if(s.length() == 0 || s.length() == 1)
return true;
if(s.charAt(0) == s.charAt(s.length()-1))
return isPal(s.substring(1, s.length()-1));
return false;
}
2
This already has been used in an answer: Check string for palindrome (just a note)
– Tom
Jan 8 '17 at 22:00
sorry, I missed it.
– john Smith
Jan 9 '17 at 13:48
add a comment |
IMO, the recursive way is the simplest and clearest.
public static boolean isPal(String s)
{
if(s.length() == 0 || s.length() == 1)
return true;
if(s.charAt(0) == s.charAt(s.length()-1))
return isPal(s.substring(1, s.length()-1));
return false;
}
IMO, the recursive way is the simplest and clearest.
public static boolean isPal(String s)
{
if(s.length() == 0 || s.length() == 1)
return true;
if(s.charAt(0) == s.charAt(s.length()-1))
return isPal(s.substring(1, s.length()-1));
return false;
}
answered Jan 8 '17 at 21:45
john Smith
71022243
71022243
2
This already has been used in an answer: Check string for palindrome (just a note)
– Tom
Jan 8 '17 at 22:00
sorry, I missed it.
– john Smith
Jan 9 '17 at 13:48
add a comment |
2
This already has been used in an answer: Check string for palindrome (just a note)
– Tom
Jan 8 '17 at 22:00
sorry, I missed it.
– john Smith
Jan 9 '17 at 13:48
2
2
This already has been used in an answer: Check string for palindrome (just a note)
– Tom
Jan 8 '17 at 22:00
This already has been used in an answer: Check string for palindrome (just a note)
– Tom
Jan 8 '17 at 22:00
sorry, I missed it.
– john Smith
Jan 9 '17 at 13:48
sorry, I missed it.
– john Smith
Jan 9 '17 at 13:48
add a comment |
here, checking for the largest palindrome in a string, always starting from 1st char.
public static String largestPalindromeInString(String in) {
int right = in.length() - 1;
int left = 0;
char word = in.toCharArray();
while (right > left && word[right] != word[left]) {
right--;
}
int lenght = right + 1;
while (right > left && word[right] == word[left]) {
left++;
right--;
}
if (0 >= right - left) {
return new String(Arrays.copyOf(word, lenght ));
} else {
return largestPalindromeInString(
new String(Arrays.copyOf(word, in.length() - 1)));
}
}
add a comment |
here, checking for the largest palindrome in a string, always starting from 1st char.
public static String largestPalindromeInString(String in) {
int right = in.length() - 1;
int left = 0;
char word = in.toCharArray();
while (right > left && word[right] != word[left]) {
right--;
}
int lenght = right + 1;
while (right > left && word[right] == word[left]) {
left++;
right--;
}
if (0 >= right - left) {
return new String(Arrays.copyOf(word, lenght ));
} else {
return largestPalindromeInString(
new String(Arrays.copyOf(word, in.length() - 1)));
}
}
add a comment |
here, checking for the largest palindrome in a string, always starting from 1st char.
public static String largestPalindromeInString(String in) {
int right = in.length() - 1;
int left = 0;
char word = in.toCharArray();
while (right > left && word[right] != word[left]) {
right--;
}
int lenght = right + 1;
while (right > left && word[right] == word[left]) {
left++;
right--;
}
if (0 >= right - left) {
return new String(Arrays.copyOf(word, lenght ));
} else {
return largestPalindromeInString(
new String(Arrays.copyOf(word, in.length() - 1)));
}
}
here, checking for the largest palindrome in a string, always starting from 1st char.
public static String largestPalindromeInString(String in) {
int right = in.length() - 1;
int left = 0;
char word = in.toCharArray();
while (right > left && word[right] != word[left]) {
right--;
}
int lenght = right + 1;
while (right > left && word[right] == word[left]) {
left++;
right--;
}
if (0 >= right - left) {
return new String(Arrays.copyOf(word, lenght ));
} else {
return largestPalindromeInString(
new String(Arrays.copyOf(word, in.length() - 1)));
}
}
answered Feb 3 '17 at 16:21
juanmf
1,66411824
1,66411824
add a comment |
add a comment |
Code Snippet:
import java.util.Scanner;
class main
{
public static void main(String args)
{
Scanner sc = new Scanner(System.in);
String str = sc.next();
String reverse = new StringBuffer(str).reverse().toString();
if(str.equals(reverse))
System.out.println("Pallindrome");
else
System.out.println("Not Pallindrome");
}
}
add a comment |
Code Snippet:
import java.util.Scanner;
class main
{
public static void main(String args)
{
Scanner sc = new Scanner(System.in);
String str = sc.next();
String reverse = new StringBuffer(str).reverse().toString();
if(str.equals(reverse))
System.out.println("Pallindrome");
else
System.out.println("Not Pallindrome");
}
}
add a comment |
Code Snippet:
import java.util.Scanner;
class main
{
public static void main(String args)
{
Scanner sc = new Scanner(System.in);
String str = sc.next();
String reverse = new StringBuffer(str).reverse().toString();
if(str.equals(reverse))
System.out.println("Pallindrome");
else
System.out.println("Not Pallindrome");
}
}
Code Snippet:
import java.util.Scanner;
class main
{
public static void main(String args)
{
Scanner sc = new Scanner(System.in);
String str = sc.next();
String reverse = new StringBuffer(str).reverse().toString();
if(str.equals(reverse))
System.out.println("Pallindrome");
else
System.out.println("Not Pallindrome");
}
}
answered Mar 28 '17 at 18:23
rashedcs
1,0791224
1,0791224
add a comment |
add a comment |
import java.util.Collections;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
public class GetAllPalindromes
{
static Scanner in;
public static void main(String args)
{
in = new Scanner(System.in);
System.out.println("Enter a string n");
String abc = in.nextLine();
Set a = printAllPalindromes(abc);
System.out.println("set is " + a);
}
public static Set<CharSequence> printAllPalindromes(String input)
{
if (input.length() <= 2) {
return Collections.emptySet();
}
Set<CharSequence> out = new HashSet<CharSequence>();
int length = input.length();
for (int i = 1; i < length - 1; i++)
{
for (int j = i - 1, k = i + 1; j >= 0 && k < length; j--, k++)
{
if (input.charAt(j) == input.charAt(k)) {
out.add(input.subSequence(j, k + 1));
} else {
break;
}
}
}
return out;
}
}
**Get All Palindrome in s given string**
Output
D:Java>java GetAllPalindromes
Enter a string
Hello user nitin is my best friend wow !
Answer is set is [nitin, nitin , wow , wow, iti]
D:Java>
add a comment |
import java.util.Collections;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
public class GetAllPalindromes
{
static Scanner in;
public static void main(String args)
{
in = new Scanner(System.in);
System.out.println("Enter a string n");
String abc = in.nextLine();
Set a = printAllPalindromes(abc);
System.out.println("set is " + a);
}
public static Set<CharSequence> printAllPalindromes(String input)
{
if (input.length() <= 2) {
return Collections.emptySet();
}
Set<CharSequence> out = new HashSet<CharSequence>();
int length = input.length();
for (int i = 1; i < length - 1; i++)
{
for (int j = i - 1, k = i + 1; j >= 0 && k < length; j--, k++)
{
if (input.charAt(j) == input.charAt(k)) {
out.add(input.subSequence(j, k + 1));
} else {
break;
}
}
}
return out;
}
}
**Get All Palindrome in s given string**
Output
D:Java>java GetAllPalindromes
Enter a string
Hello user nitin is my best friend wow !
Answer is set is [nitin, nitin , wow , wow, iti]
D:Java>
add a comment |
import java.util.Collections;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
public class GetAllPalindromes
{
static Scanner in;
public static void main(String args)
{
in = new Scanner(System.in);
System.out.println("Enter a string n");
String abc = in.nextLine();
Set a = printAllPalindromes(abc);
System.out.println("set is " + a);
}
public static Set<CharSequence> printAllPalindromes(String input)
{
if (input.length() <= 2) {
return Collections.emptySet();
}
Set<CharSequence> out = new HashSet<CharSequence>();
int length = input.length();
for (int i = 1; i < length - 1; i++)
{
for (int j = i - 1, k = i + 1; j >= 0 && k < length; j--, k++)
{
if (input.charAt(j) == input.charAt(k)) {
out.add(input.subSequence(j, k + 1));
} else {
break;
}
}
}
return out;
}
}
**Get All Palindrome in s given string**
Output
D:Java>java GetAllPalindromes
Enter a string
Hello user nitin is my best friend wow !
Answer is set is [nitin, nitin , wow , wow, iti]
D:Java>
import java.util.Collections;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
public class GetAllPalindromes
{
static Scanner in;
public static void main(String args)
{
in = new Scanner(System.in);
System.out.println("Enter a string n");
String abc = in.nextLine();
Set a = printAllPalindromes(abc);
System.out.println("set is " + a);
}
public static Set<CharSequence> printAllPalindromes(String input)
{
if (input.length() <= 2) {
return Collections.emptySet();
}
Set<CharSequence> out = new HashSet<CharSequence>();
int length = input.length();
for (int i = 1; i < length - 1; i++)
{
for (int j = i - 1, k = i + 1; j >= 0 && k < length; j--, k++)
{
if (input.charAt(j) == input.charAt(k)) {
out.add(input.subSequence(j, k + 1));
} else {
break;
}
}
}
return out;
}
}
**Get All Palindrome in s given string**
Output
D:Java>java GetAllPalindromes
Enter a string
Hello user nitin is my best friend wow !
Answer is set is [nitin, nitin , wow , wow, iti]
D:Java>
answered Jun 12 '17 at 9:15
Keshav Gera
2,4331728
2,4331728
add a comment |
add a comment |
1 2
next
protected by Community♦ Apr 7 '13 at 17:01
Thank you for your interest in this question.
Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).
Would you like to answer one of these unanswered questions instead?
3
Not sure if this is intentional but the string in your example - reliefpfpfeiller - isn't a palindrome
– barrowc
Nov 10 '10 at 1:47