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.