Table of Contents
Problem Statement
In this problem, we are given a length. We have to generate a string that has all characters an odd number of times. For example, aaaaab is a valid string because count(a)=5 and count(b)=1.
But, aaabbc is not a valid string here because count(b)=2 which is an even number.
Example
n = 4
"pppz"
Explanation:
“pppz” is a valid string since the character ‘p’ occurs three times and the character ‘z’ occurs once. Note that there are many other valid strings such as “ohhh” and “love”.
n = 2
"xy"
Explanation:
“xy” is a valid string since the characters ‘x’ and ‘y’ occur once. Note that there are many other valid strings such as “ag” and “ur”.
Approach
We can use a trick here.
If the length of string is odd number then we can use a single character throughout to create the string, and if the input length is even number then we can create a string having just two characters.
One character occuring n-1 times (which will be an odd number because n is even here) and anoter character just once (which is ofcourse an odd count).
For example n=4, our output will be aaab
and if n=3, our output will be aaa
we are just using characters a and b in our solution, there are more options of characters if you want.
Implementation
C++ Program for Generate a String With Characters That Have Odd Counts Leetcode Solution
#include <bits/stdc++.h> using namespace std; string generateTheString(int n) { string str; if(n%2==0) { for(int i=0;i<n-1;i++) str.push_back('a'); str.push_back('b'); } else { for(int i=0;i<n;i++) str.push_back('a'); } return str; } int main() { int n=5; cout<< generateTheString(n) << endl; return 0; }
aaaaa
Java Program for Generate a String With Characters That Have Odd Counts Leetcode Solution
class Rextester { public static String generateTheString(int n) { StringBuilder sb=new StringBuilder(); if(n%2==0) { for(int i=0;i<n-1;i++)sb.append('a'); sb.append('b'); } else { for(int i=0;i<n;i++)sb.append('a'); } return sb.toString(); } public static void main(String[]args) { int length=5; System.out.println(generateTheString(length)); } }
aaaaa
Complexity Analysis for Generate a String With Characters That Have Odd Counts Leetcode Solution
Time Complexity
O(n): We are linearly iterating for the length given to just once. Therefore, the time complextity will be O(n).
Space Complexity
O(n): We are creating our output string, so we are using an extra space of length given. Therefore, space complexity also is O(n).