Valid Palindrome string

Write a program to check for valid palindrome string.

Example 1:

Input: str="A man, a plan, a canal: Panama" 
Output: true

Approach: With memory

Java


public class ValidPalindromeString {
    public static void main(String[] args) {
        String str = "A man, a plan, a canal: Panama";
        if (isPalindrome(str)) {
            System.out.println("true");
        } else {
            System.out.println("false");
        }
    }

    // method to check string is Palindrome
    public static boolean isPalindrome(String s) {
        // define two string
        String str1 = "";
        String str2 = "";
        // iterate till end of string
        for (int i = 0; i < s.length(); i++) {
            // add when only letterOrDigit
            if (Character.isLetterOrDigit(s.charAt(i))) {
                // append in last
                str1 = str1 + s.charAt(i);
                // append in reverse order
                str2 = s.charAt(i) + str2;
            }
        }
        // check both are equals
        if (str1.equalsIgnoreCase(str2))
            return true;
        return false;
    }
}

C++

#include <bits/stdc++.h>
using namespace std;
//function to check string is Palindrome
bool isPalindrome(string s)
{

    //store the each charater into
    //the vector only alphanumeric values
    vector<charv;
     for(int i=0;i<s.size();i++)
        {
            if(isalpha(s[i]))
            {

                //convert into the lower case
                if(s[i]>='A'&&s[i]<='Z')
                       s[i]=s[i]+32;
                  v.push_back(s[i]);
            }
            if(isdigit(s[i]))
                   v.push_back(s[i]);
                 
        }
    //check for palindrome
      int i=0,j=v.size()-1;
        while(i<j)
        {

            //if correspondings are not
            //equal return false
            if(v[i]!=v[j])
                   return false;
            i++;
            j--;
        }
    //return true
      return true;
}
int main()
{
    string str = "A man, a plan, a canal: Panama";
        if (isPalindrome(str)) {
            cout<<"true";;
        } else {
            cout<<"false";
    }
}


Approach: Effective

Java


public class ValidPalindromeString1 {
    public static void main(String[] args) {
        String str = "A man, a plan, a canal: Panama";
        if (isPalindrome(str)) {
            System.out.println("true");
        } else {
            System.out.println("false");
        }
    }

    // method to check string is Palindrome
    public static boolean isPalindrome(String s) {
        // hold length start and end
        int left = 0;
        int right = s.length() - 1;
        // iterate untill left less then right
        while (left < right) {
            // iterate untill not letter or digit from beginning
            while (left < right && !Character.isLetterOrDigit(s.charAt(left))) {
                left++;
            }
            // convert lower case
            String l = String.valueOf(s.charAt(left)).toLowerCase();

            // iterate untill not letter or digit from end
            while (left < right && !Character.isLetterOrDigit(s.charAt(right))) {
                right--;
            }
            // convert lower case
            String r = String.valueOf(s.charAt(right)).toLowerCase();
            // if !equals then false
            if (!l.equals(r))
                return false;

            left++;
            right--;
        }
        return true;
    }
}

C++

#include <bits/stdc++.h>
using namespace std;
//function to check string is Palindrome
bool isPalindrome(string s
{
    // hold length start and end
     int left = 0;
     int right = s.length() - 1;
    // iterate untill left less then right
    while (left < right
    {
            // iterate untill not letter or digit from beginning
            while (left < right && !isalpha(s[left])&&!isdigit(s[left])) {
                left++;
            }
            // convert lower case
            if(s[left]>='A'&&s[left]<='Z')
              s[left]=s[left]+32;

            // iterate untill not letter or digit from end
          while (left < right && !isalpha(s[right])&&!isdigit(s[right])) {
                right--;
            }
            // convert lower case
            if(s[right]>='A'&&s[right]<='Z')
              s[right]=s[right]+32;
            // if !equals then false
            if (s[left]!=s[right])
                return false;

            left++;
            right--;
        }
        return true;
}
int main()
{
    string str = "A man, a plan, a canal: Panama";
        if (isPalindrome(str)) {
            cout<<"true";;
        } else {
            cout<<"false";
    }
}


No comments:

Post a Comment