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

Last Updated : 18 Jul, 2022

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.```

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 :

## C++

 `// 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

 `// 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`

## Python3

 `# 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#

 `// 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`

## PHP

 ``

## Javascript

 ``

Output:

`Yes`

Time Complexity : O(n/2) , where n is size of given string.

Auxiliary Space : O(1) , as we are not using any extra space.