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

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.

Feeling lost in the world of random DSA topics, wasting time without progress? It's time for a change! Join our DSA course, where we'll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 geeks!

Previous
Next