Skip to content
Related Articles

Related Articles

Improve Article

Convert the string into palindrome string by changing only one character

  • Difficulty Level : Easy
  • Last Updated : 09 Apr, 2021

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

 



 

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.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.




My Personal Notes arrow_drop_up
Recommended Articles
Page :