# Convert the string into palindrome string by changing only one character

Given a string str. Check if it is possible to convert the string into palindrome string by changing only one character.

Examples:

```Input : str = "abccaa"
Output : Yes
We can change the second last character
i.e. 'a' to 'b' to make it palindrome string

Input : str = "abbcca"
Output : No
We can not convert the string into palindrome
string by changing only one character.
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach : The idea is simple, we check character str[i] with str[n-i-1]. If there is a mismatch, we increment count. If count of mismatches exceed 1, we return false. Else we return true.

Below is the implementation of above idea :

 `// CPP program to Check if it is ` `// possible to convert the string  ` `// into palindrome string by changing  ` `// only one character. ` `#include ` `using` `namespace` `std; ` ` `  `// Function to check if it is possible ` `// to convert the string into palindrome ` `bool` `checkPalindrome(string str){ ` `     `  `    ``int` `n = str.length();         ` `   `  `    ``// Counting number of characters  ` `    ``// that should be changed. ` `    ``int` `count = 0; ` `    ``for` `(``int` `i = 0; i < n/2; ++i)  ` `        ``if` `(str[i] != str[n - i - 1])  ` `            ``++count; ` `     `  `    ``// If count of changes is less than ` `    ``// or equal to 1 ` `    ``return` `(count <= 1); ` `} ` ` `  `// Driver function. ` `int` `main() ` `{ ` `    ``string str = ``"abccaa"``;     ` `    ``if` `(checkPalindrome(str)) ` `       ``cout << ``"Yes"` `<< endl; ` `    ``else` `       ``cout << ``"No"` `<< endl; ` `     `  `    ``return` `0; ` `} `

 `// Java program to Check if it is ` `// possible to convert the string  ` `// into palindrome string by changing  ` `// only one character. ` `import` `java.io.*; ` ` `  `class` `GFG { ` `     `  `    ``// Function to check if it is possible ` `    ``// to convert the string into palindrome ` `    ``static` `boolean` `checkPalindrome(String str){ ` `     `  `    ``int` `n = str.length();      ` ` `  `    ``// Counting number of characters  ` `    ``// that should be changed. ` `    ``int` `count = ``0``; ` `     `  `    ``for` `(``int` `i = ``0``; i < n/``2``; ++i) ` `     `  `        ``if` `(str.charAt(i) != str.charAt(n - i - ``1``))  ` `            ``++count; ` `     `  `    ``// If count of changes is less than ` `    ``// or equal to 1 ` `    ``return` `(count <= ``1``); ` `    ``} ` `     `  `// Driver Function     ` `public` `static` `void` `main(String[] args) { ` `     `  `    ``String str = ``"abccaa"``;  ` `         `  `    ``if` `(checkPalindrome(str)) ` `     `  `        ``System.out.println(``"Yes"``); ` `    ``else` `        ``System.out.println(``"No"``); ` `         `  `    ``} ` `     `  `} ` ` `  `// This code is contributed by vt_m `

 `# Python program to Check  ` `# if it is possible to  ` `# convert the string into  ` `# palindrome string by  ` `# changing only one character. ` ` `  `# Function to check if  ` `# it is possible to ` `# convert the string  ` `# into palindrome ` `def` `checkPalindrome(``str``) : ` `     `  `    ``n ``=` `len``(``str``) ` `     `  `    ``# Counting number of  ` `    ``# characters that  ` `    ``# should be changed. ` `    ``count ``=` `0` `    ``for` `i ``in` `range``(``0``, ``int``(n ``/` `2``)) : ` `        ``if` `(``str``[i] !``=` `str``[n ``-` `i ``-` `1``]) : ` `            ``count ``=` `count ``+` `1` `     `  `    ``# If count of changes  ` `    ``# is less than ` `    ``# or equal to 1 ` `    ``if``(count <``=` `1``) : ` `        ``return` `True` `    ``else` `: ` `        ``return` `False` ` `  `# Driver Code ` `str` `=` `"abccaa"` `if` `(checkPalindrome(``str``)) : ` `    ``print` `(``"Yes"``) ` `else` `: ` `    ``print` `(``"No"``) ` `     `  `# This code is contributed by  ` `# Manish Shaw(manishshaw1) `

 `// C# program to Check if it is ` `// possible to convert the string  ` `// into palindrome string by changing  ` `// only one character. ` `using` `System; ` ` `  `class` `GFG { ` `     `  `    ``// Function to check if it is possible ` `    ``// to convert the string into palindrome ` `    ``static` `bool` `checkPalindrome(``string` `str){ ` `     `  `        ``int` `n = str.Length;  ` ` `  `        ``// Counting number of characters  ` `        ``// that should be changed. ` `        ``int` `count = 0; ` `         `  `        ``for` `(``int` `i = 0; i < n / 2; ++i) ` `         `  `            ``if` `(str[i] != str[n - i - 1])  ` `                ``++count; ` `         `  `        ``// If count of changes is less than ` `        ``// or equal to 1 ` `        ``return` `(count <= 1); ` `    ``} ` `     `  `    ``// Driver Function  ` `    ``public` `static` `void` `Main()  ` `    ``{       ` `        ``string` `str = ``"abccaa"``;  ` `             `  `        ``if` `(checkPalindrome(str)) ` `         `  `            ``Console.WriteLine(``"Yes"``); ` `        ``else` `            ``Console.WriteLine(``"No"``); ` `             `  `        ``} ` `     `  `} ` ` `  `// This code is contributed by vt_m `

 ` `

Output:
```Yes
```

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

Intern at GeeksforGeeks

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Article Tags :
Practice Tags :