Given a palindromic string
After doing so, return the final string. If there is no way to do so, return the empty string.
palindrome, replace exactly one character by any lowercase English letter so that the string becomes the lexicographically smallest possible string that isn't a palindrome.After doing so, return the final string. If there is no way to do so, return the empty string.
Example 1:
Input: palindrome = "abccba" Output: "aaccba"
Approach
Java
public class BreakPalindrome {public static void main(String[] args) {String palindrome = "abccba";System.out.println(breakPalindrome(palindrome));}// function to check for// palindrome stringstatic boolean isPalindrome(char[] s) {int low = 0, high = s.length - 1;while (low < high) {if (s[low] != s[high])return false;low++;high--;}return true;}static String breakPalindrome(String s) {char sC[] = s.toCharArray();int i = 0;int n = s.length();if (n == 1)return "";while (i < n && sC[i] == 'a')i++;if (i == n) {sC[n - 1] = 'b';} else {while (true) {char temp = sC[i];sC[i] = 'a';if (isPalindrome(sC)) {sC[i] = temp;i++;if (i == n) {sC[i - 1] = 'b';break;}} elsebreak;}}return new String(sC);}}
C++
#include <bits/stdc++.h>using namespace std;//function to check for//palindrome stringbool isPalindrome(string s){int low=0,high=s.size()-1;while(low<high){if(s[low]!=s[high])return false;low++;high--;}return true;}string breakPalindrome(string s){int i=0;int n=s.size();if(n==1)return "";while(i<n&&s[i]=='a')i++;if(i==n)s[n-1]='b';else{while(true){char temp=s[i];s[i]='a';if(isPalindrome(s)){s[i]=temp;i++;if(i==n){s[i-1]='b';break;}}elsebreak;}}return s;}int main(){string palindrome = "abccba";cout<<breakPalindrome(palindrome);return 0;}
No comments:
Post a Comment