[Algorithm](EN) Check whether given string is palindrome
Write code of checking whether given string is palindrome
Environment and Prerequisite
- Python
- C++
What is Palindrome?
Palindrome
is a string which reads the same backward as forward.- Example: 토마토, abdba, 토마토맛토마토, 1234567654321
Code
- Time Complexity:
O(n)
C
#include <stdio.h>
#include <string.h>
int is_palindrome(char * s){
int len = strlen(s);
int left = 0;
int right = len-1;
// move left one and right one to middle one by one
// (right - left) > 1
// [In case of odd number] left only middle element
// [In case of even number] go until "left + 1==right"
while ( (right - left) > 1 ) {
if( s[right] != s[left] ){
return 0;
}
left += 1;
right -= 1;
}
return 1;
}
int main (){
char * palindrome = "abcdcba";
char * non_palindrome = "abcdefg";
printf("%d\n", is_palindrome(palindrome));
printf("%d\n", is_palindrome(non_palindrome));
return 0;
}
C++
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
bool is_palindrome(string s){
string s_reverse = s;
reverse(s_reverse.begin(), s_reverse.end());
return s == s_reverse ? true : false;
}
int main (){
string s1 = "abcde1edcba";
string s2 = "asdlkfjaw;oefjao;iwefja;ow";
cout << is_palindrome(s1) << '\n';
cout << is_palindrome(s2) << '\n';
return 0;
}
Python
def is_palindrome(s):
return s == s[::-1]
s1 = "abcde1edcba"
s2 = "fjaw;"
print(is_palindrome(s1))
print(is_palindrome(s2))