/*
C++ Palindrome Checker program by lolman_ks.
Checks palindromic string WITHOUT reversing it.
Same logic can be used to build this program in other languages.
*/
/*
Logic: In a palindromic string, the 1st and last, 2nd and 2nd last, and so
on characters are equal.
Return false from the function if any of these matches, i.e (1st and last),
(2nd and 2nd last) are not equal.
*/
#include <iostream>
using namespace std;
bool checkPalindromicString(string text){
int counter_1 = 0; //Place one counter at the start.
int counter_2 = text.length() - 1; //And the other at the end.
//Run a loop till counter_2 is not less that counter_1.
while(counter_2 >= counter_1){
if(text[counter_1] != text[counter_2]) return false; //Check for match.
//Note: Execution of a function is halted as soon as a value is returned.
else{
++counter_1; //Move the first counter one place ahead.
--counter_2; //Move the second character one place back.
}
}
return true;
/*
Return true if the loop is not broken because of unequal characters and it
runs till the end.
If the loop runs till the condition specified in it, i.e
(counter_2 >= counter1), that means all matches are equal and the string is
palindromic.
*/
}
//Implementation of the function.
int main(){
cout << checkPalindromicString("racecar") << endl; //Outputs 1 (true).
cout << checkPalindromicString("text") << endl; //Outputs 0 (False).
if(checkPalindromicString("lol")){
cout << "#lolman_ks";
}
//Outputs #lolman_ks.
return 0;
}
//I hope this would be useful to you all, please promote this answer if it is.
//#lolman_ks
function palindrome(str) {
var re = /[W_]/g;// representing Non-alphanumetic characters
var lowRegStr = str.toLowerCase().replace(re, '');
var reverseStr = lowRegStr.split('').reverse().join('');
return reverseStr === lowRegStr;
}
palindrome("A man, a plan, a canal. Panama");
function isPalindrome(sometext) {
var replace = /[.,'!?- "]/g; //regex for what chars to ignore when determining if palindrome
var text = sometext.replace(replace, '').toUpperCase(); //remove toUpperCase() for case-sensitive
for (var i = 0; i < Math.floor(text.length/2) - 1; i++) {
if(text.charAt(i) == text.charAt(text.length - 1 - i)) {
continue;
} else {
return false;
}
}
return true;
}
//EDIT: found this on https://medium.com/@jeanpan/javascript-splice-slice-split-745b1c1c05d2
//, it is much more elegant:
function isPalindrome(str) {
return str === str.split('').reverse().join('');
}
//you can still add the regex and toUpperCase() if you don't want case sensitive
#palindrome program in python
n=int(input('Enter a number :'))
num=n
rev=0
while n>0:
r=n%10
rev=rev*10+r
n//=10
print('Reverse of',num,'=',rev)
if rev==num:
print(num,'is a palindrome number')
else :
print(num,'is not a palindrome number')
#output
Enter a number :132
Reverse of 132 = 231
132 is not a palindrome numbe
________________________________________________________________________________
Enter a number :451
Reverse of 451 = 154
451 is not a palindrome number
________________________________________________________________________________
Enter a number :12321
Reverse of 12321 = 12321
12321 is a palindrome number
let data = 12421
const dataOne = data.toString().split("").reverse().join("");
data = data.toString();
dataOne === data ? console.log("Palindrom")
: console.log("Not Palindorm");
// The Setup
function palindrome(str) {
// Using Regex to remove all the special character, converted all the string to lowercase to ease working with and assign it to a new variable
let newStr = str.replace(/[^a-zA-Z0-9]/g, '').toLowerCase();
// Split the string, reverse, join then assign it to a new variable
let revStr = newStr.split('').reverse().join('');
// return their value
return newStr === revStr;
}
palindrome("A man, a plan, a canal. Panama");
# Note: A palindrome is a string that reads the same forwards and backwards.
def palindrome_function(original_list, user_string):
# reversing the list
reversed_list = original_list[::-1]
# comparing reversed_list to original_list to
# determine if the original_list is a palindrome
if reversed_list == original_list:
print("'" + user_string.lower() + "' is a palindrome.")
else:
print("'" + user_string.lower() + "' is not a palindrome!")
def main():
# promting user to input a word or phrase
user_string = input("Enter string: ")
user_list = list(user_string.lower())
# putting our palindrome_function() to use
palindrome_function(user_list, user_string)
if __name__ == "__main__":
main()
var letters = [];
var word = "racecar" //bob
var rword = "";
//put letters of word into stack
for (var i = 0; i < word.length; i++) {
letters.push(word[i]);
}
//pop off the stack in reverse order
for (var i = 0; i < word.length; i++) {
rword += letters.pop();
}
if (rword === word) {
console.log("The word is a palindrome");
}
else {
console.log("The word is not a palindrome");
}
function isPalindrome(word) {
// Step 1- Put a pointer at each extreme of the word
// Step 2 - Iterate the string "inwards"
// Step 3 - At each iteration, check if the pointers represent equal values
// If this condition isn't accomplished, the word isn't a palindrome
let left = 0
let right = word.length-1
while (left < right) {
if (word[left] !== word[right]) return false
left++
right--
}
return true
}
isPalindrome("neuquen") // true
isPalindrome("Buenos Aires") // false
// Should Check if the argument passed is a string
function isPalindrome(str){
return typeof str === "string"
? str.split("").reverse().join("") === str
: "Value is not a type string";
}
var isPalindrome = function(x) {
let y = x
let r = y.toString().split('').reverse().join('')
let t = Number(r)
if(t ===x){
return true
}
else{
return false}
}
# Program to check if a string is palindrome or not
my_str = 'aIbohPhoBiA'
# make it suitable for caseless comparison
my_str = my_str.casefold()
# reverse the string
rev_str = reversed(my_str)
# check if the string is equal to its reverse
if list(my_str) == list(rev_str):
print("The string is a palindrome.")
else:
print("The string is not a palindrome.")
//Reverses every character in the string
func Reverse(s string) (result string){
for _,v := range s {
result = string(v) + result
}
return
}
//Check if the string is same as it is reversed
func Check(s string) (b bool){
a := Reverse(s)
if s == a{
b = true
}else {
b = false
}
return
}
class Solution :
def isPalindrome(self, string: str ) :
'''
A function to check if a string is Palindrome or not!
:param string: string to be checked
:return: True if it is palindrome else False
'''
string = string.lower()
s_stripped = ''.join(list( filter ( lambda x : x.isalnum () == True , string)))
return s_stripped == s_stripped[::-1]
if __name__ == '__main__' :
string = 'Was it a car or a cat I saw!!'
print (f'Is "{string}" a palindrome? : {Solution ().isPalindrome (string)}')
string2 = 'A man, a plan,'
print (f'Is "{string2}" a palindrome? : {Solution ().isPalindrome (string2)}')
const palindrome = str => {
// turn the string to lowercase
str = str.toLowerCase()
// reverse input string and return the result of the
// comparisong
return str === str.split('').reverse().join('')
}
#include <iostream>
#include <deque>
bool is_palindrome(const std::string &s){
if(s.size() == 1 ) return true;
std::deque<char> d ;
for(char i : s){
if(std::isalpha(i)){
d.emplace_back( toupper(i) );
}
}
auto front = d.begin();
auto back = d.rbegin();
while( (front != d.end()) || (back != d.rend())){
bool ans = (*front == *back);
if(!ans){
return ans;
}
++front;++back;
}
return true;
}
int main() {
std::string s = "A man, a plan, a cat, a ham, a yak, a yam, a hat, a canal-Panama!";
std::cout << std::boolalpha << is_palindrome(s) << std::endl;
return 0;
}
// can we generate palindrome string by suffling
// the character of the string s
public bool CanBePalindrome(string s)
{
var dict = new Dictionary<char, int>();
for (int j =0; j < s.Length; j++)
{
var item = s[j];
if (dict.ContainsKey(item))
{
dict[item]++;
if (dict[item] == 2)
{
dict.Remove(item);
}
}
else
{
dict.Add(item, 1);
}
}
return dict.Count <= 1;
}