Leetcode 125 Valid Palindrome ( C,C++,C#,Java,Javascript,Ruby)

Chan Park
2 min readApr 2, 2021

Given a string s, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.

Example 1:

Input: s = "A man, a plan, a canal: Panama"
Output: true
Explanation: "amanaplanacanalpanama" is a palindrome.

Example 2:

Input: s = "race a car"
Output: false
Explanation: "raceacar" is not a palindrome.

Constraints:

  • 1 <= s.length <= 2 * 105
  • s consists only of printable ASCII characters.
//C
bool isPalindrome(char * s){
int left=0, right=strlen(s)-1;
while (left<right) {
while (left<right && !isalnum(s[left]))
left++;
while (left<right && !isalnum(s[right]))
right--;
if (tolower(s[left])!=tolower(s[right]))
return false;
left++;
right--;
}
return true;
}
//C++
class Solution {
public:
bool isPalindrome(string s) {
int left=0, right=s.size()-1;
while (left<right) {
while (left<right && !isalnum(s[left]))
left++;
while (left<right && !isalnum(s[right]))
right--;
if (tolower(s[left])!=tolower(s[right]))
return false;
left++;
right--;
}
return true;
}
};
//C#
// public class Solution {
// public bool IsPalindrome(string s) {
// StringBuilder sb = new StringBuilder();

// foreach(Char c in s.ToCharArray())
// {
// if(char.IsLetterOrDigit(c) )
// {
// sb.Append(c);
// }
// }

// String str = sb.ToString().ToLower();

// for(int i = 0; i < str.Length/2; i++)
// {
// if(str[str.Length-1-i] != str[i])
// return false;
// }

// return true;
// }
// }

using System.Text.RegularExpressions;

public class Solution {
public bool IsPalindrome(string s) {

s = Regex.Replace( s, "[^a-zA-Z0-9]+", "", RegexOptions.Compiled ).ToLower();

for(int i = 0; i < s.Length/2; i++)
{
if(s[s.Length-1-i] != s[i])
return false;
}

return true;
}
}
//Java
class Palindrome{
public static void main(String[] args) {
System.out.println(new Solution().isPalindrome("A man, a plan, a canal: Panama"));
System.out.println(new Solution1().isPalindrome("A man, a plan, a canal: Panama"));
}
}
class Solution {
public boolean isPalindrome(String s) {
StringBuilder sb = new StringBuilder();

for(char c : s.toCharArray())
{
if(Character.isLetter(c) || Character.isDigit(c) )
{
sb.append(c);
}
}

String str = sb.toString().toLowerCase();

for(int i = 0; i < str.length()/2; i++)
{
if(str.charAt(str.length()-1-i) != str.charAt(i))
return false;
}

return true;
}
}

class Solution1{
public boolean isPalindrome(String s) {


s = s.replaceAll("[^a-zA-Z0-9]","").toLowerCase();

for(int i = 0; i < s.length()/2; i++)
{
if(s.charAt(s.length()-1-i) != s.charAt(i))
return false;
}

return true;
}
}
//Javascript
var isPalindrome = function(s) {
s = s.replace(/[^a-zA-Z0-9]/g,'')
s = s.toLowerCase()

return s == s.split('').reverse().join('')
};

console.log(isPalindrome("A man, a plan, a canal: Panama"));
//Ruby
def is_palindrome(s)
s.downcase.gsub(/[^a-z\d]/,"") == s.downcase.gsub(/[^a-z\d]/,"").reverse
end

puts is_palindrome("A man, a plan, a canal: Panama");

--

--