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<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.
Please Login to comment...