C Program to Check for Palindrome String

A string is said to be palindrome if the reverse of the string is the same as the string. For example, “abba” is a palindrome because the reverse of “abba” will be equal to “abba” so both of these strings are equal and are said to be a palindrome, but “abbc” is not a palindrome.

In this article, we will see a simple program to check whether the string is palindrome or not.

Recommended Practice

Algorithm

1. Initialize 2 variables, l from the start and h from the end of the given string.
2. Now, we will compare the characters at index l and h with each other
3. If the characters are not equal, the string is not palindrome.
4. If the characters are equal, we will increment l and decrement h.
5. Steps 2,3 and 4 will be repeated till ( l < h ) or we find unequal characters.
6. If we reach the condition ( l < h ), it means all the corresponding characters are equal and the string is palindrome.

Basically, we traverse the string in forward and backward directions comparing characters at the same distance from start and end. If we find a pair of distinct characters, the string is not palindrome. If we reach the midpoint, the string is palindrome.

C++

 `#include ``#include ` `using` `namespace` `std;` `bool` `isPalindrome(string str) {``    ``int` `low = 0;``    ``int` `high = str.size() - 1;` `    ``// Keep comparing characters while they are same``    ``while` `(low < high) {``        ``if` `(str[low] != str[high]) {``            ``return` `false``; ``// not a palindrome.``        ``}``        ``low++; ``// move the low index forward``        ``high--; ``// move the high index backwards``    ``}``      ``return` `true``; ``// is a palindrome     ``}` `int` `main()``{``    ``string str= ``"abbba"``;``    ``string str1 = ``"abcded"``;``    ` `    ``cout << str << ``" is palindrome "` `<< isPalindrome(str) << endl;``    ``cout << str1 << ``" is palindrome "` `<< isPalindrome(str1) <

C

 `// C implementation to check if a given``// string is palindrome or not``#include ``#include ` `int` `main()``{``    ``char` `str[] = { ``"abbba"` `};` `    ``// Start from first and``    ``// last character of str``    ``int` `l = 0;``    ``int` `h = ``strlen``(str) - 1;` `    ``// Keep comparing characters``    ``// while they are same``    ``while` `(h > l) {``        ``if` `(str[l++] != str[h--]) {``            ``printf``(``"%s is not a palindrome\n"``, str);``            ``return` `0;``            ``// will return from here``        ``}``    ``}` `    ``printf``(``"%s is a palindrome\n"``, str);` `    ``return` `0;``}`

Output
```abbba is a palindrome

```

Complexity Analysis

Time complexity: O(n), where n is the number of characters in the string.
Auxiliary Space: O(1)

Previous
Next
Share your thoughts in the comments
Similar Reads