Open In App
Related Articles

Convert the string into palindrome string by changing only one character

Improve Article
Improve
Save Article
Save
Like Article
Like

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<bits/stdc++.h>
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




<?php
// PHP 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
function checkPalindrome($str)
{
     
    $n = strlen($str);    
     
    // Counting number of characters
    // that should be changed.
    $count = 0;
    for ($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 Code
{
    $str = "abccaa";
    if (checkPalindrome($str))
        echo "Yes" ;
    else
        echo "No" ;
     
    return 0;
}
 
// This code is contributed by nitin mittal.
?>


Javascript




<script>
    // Javascript 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
    function checkPalindrome(str){
 
        let n = str.length;       
 
        // Counting number of characters
        // that should be changed.
        let count = 0;
        for (let i = 0; i < parseInt(n/2, 10); ++i)
            if (str[i] != str[n - i - 1])
                ++count;
 
        // If count of changes is less than
        // or equal to 1
        return (count <= 1);
    }
     
    let str = "abccaa";   
    if (checkPalindrome(str))
       document.write("Yes");
    else
       document.write("No");
   
  // This code is contributed by divyesh072019.
</script>


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!

Last Updated : 18 Jul, 2022
Like Article
Save Article
Previous
Next
Similar Reads
Complete Tutorials