Untitled
unknown
plain_text
a year ago
1.3 kB
6
Indexable
// Online C++ compiler to run C++ program online #include <iostream> #include <bits/stdc++.h> using namespace std; bool isPalindrome(vector<int> count){ int totalOdd = 0; for(int i=0; i<26;i++){ if(count[i]&1){ totalOdd++; } } return totalOdd<2; } vector<int> subtract(vector<int> count, vector<int> second){ vector<int> ans(26,0); for(int i=0; i<26;i++){ ans[i] = count[i]-second[i]; } return ans; } bool canMakePalindrome(string& s, int len, vector<vector<int>> count){ int n = s.size(); for(int i=len;i<n;i++){ int j = i-len; vector<int> final = subtract(count[n],subtract(count[i+1],count[i+1-len])); if(isPalindrome(final)){ return true; } } return false; } int getMinSubstring(string s){ int n = s.size(); vector<vector<int>> count(n+1,vector<int>(26,0)); vector<int> curr(26,0); for(int i=0; i<n;i++){ curr[s[i]-'a']++; count[i+1] = curr; } int ans = 0; for(int len=1; len<n;len++){ if(canMakePalindrome(s,len,count)){ return len; } } return ans; } int main() { // Write C++ code here std::cout << getMinSubstring("abcdc"); return 0; }
Editor is loading...
Leave a Comment