You are given two strings s
and target
. You want to form as many instances of the string target
as possible by rearranging the characters of the string s
. Note that each character in s
can only be used once in each instance of target
.
Return the maximum number of instances of target
that can be formed.
s
and target
?
s
and target
.target
, check how many times it can be formed using the characters in s
. The minimum ratio of available characters to needed characters across all characters in target
will determine how many times target
can be formed.Let’s implement this strategy in Python:
from collections import Counter
def rearrangeCharacters(s: str, target: str) -> int:
# Count characters in s and target
s_count = Counter(s)
target_count = Counter(target)
# Initialize the maximum number with a large value
max_instances = float('inf')
# Calculate the number of times we can form target from s
for char in target_count:
if char in s_count:
max_instances = min(max_instances, s_count[char] // target_count[char])
else:
return 0
return max_instances
# Example Usage
s = "ilovecodingonleetcode"
target = "code"
print(rearrangeCharacters(s, target)) # Output should be 2
The time complexity of this solution is:
s
and m is the length of target
.target
.So, the overall time complexity is O(n + m). The space complexity is O(n + m) due to the storage in the Counter
objects.
Got blindsided by a question you didn’t expect?
Spend too much time studying?
Or simply don’t have the time to go over all 3000 questions?