Table of Contents
Problem Statement
Construct K Palindrome Strings LeetCode Solution – Given a string s
and an integer k
, return true
if you can use all the characters in s
to construct k
palindrome strings or false
otherwise.
Input: s = "annabelle", k = 2 Output: true Explanation: You can construct two
palindromes using all characters
in s. Some possible constructions "anna" + "elble", "anbna" + "elle", "anellena" + "b"
Explanation
The trick is to understand that the characters which occur an odd number of times will form a separate palindromic string each time consisting of either a single character or being present in the mid of a string. So, if the count of odd characters happens to be more than k, we return a false and likewise follow.
Also if the number of characters in s is less than k then it’s in no way possible to make k palindromic strings out of it.
For all other cases, we can make k palindromic strings.
Count the character having an odd frequency(countodd)
if(countodd<=k) return true;
else
return false
Code
C++ Code For Construct K Palindrome Strings
class Solution { public: bool canConstruct(string s, int k) { unordered_map<char,int> freq; for(char ch:s) { freq[ch]++; } int oddCount=0; for(auto pr:freq) { if(pr.second%2) { oddCount++; } } return oddCount<=k&&k<=s.length(); } };
Java Code For Construct K Palindrome Strings
class Solution { public boolean canConstruct(String s, int k) { int n = s.length(); if (n==k) return true; else if (n<k) return false; int [] cnt = new int[26]; for (int i = 0; i<n; i++) cnt[s.charAt(i)-'a']++; int odd_chars = 0; for (int i = 0; i<26; i++) { if (cnt[i]==0) continue; if (cnt[i]%2!=0) odd_chars++; } if (odd_chars>k) return false; else return true; } }
Python Code For Construct K Palindrome Strings
class Solution: def canConstruct(self, s: str, k: int) -> bool: count = collections.Counter(s) odd = 0 for i in count: if count[i] % 2: odd += 1 if odd > k:return False return len(s) >= k
Complexity Analysis for Construct K Palindrome Strings LeetCode Solution
Time Complexity
O(N) as we need to visit each character to calculate its count.
Space Complexity
O(N) we store the frequencies of characters in a hash-map or frequency array so it would take O(n) space.
Reference: https://en.wikipedia.org/wiki/Palindrome