# [Algorithm](EN) Check whether given string is palindrome

Write code of checking whether given string is palindrome

• 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))

``````

Updated on