You are given an array of strings words
(0-indexed).
In one operation, pick two distinct indices i
and j
, where words[i]
is a non-empty string, and move any character from words[i]
to any position in words[j]
.
Return true
if you can make every string in words
equal using any number of operations, and false
otherwise.
Example 1:
Input: words = ["abc","aabc","bc"]
Output: true
Explanation: Move the first 'a' in words[1] to the front of words[2],
to make
words[1]
= "abc" and words[2] = "abc".
All the strings are now equal to "abc", so return true
.
Example 2:
Input: words = ["ab","a"]
Output: false
Explanation: It is impossible to make all the strings equal using the operation.
Approach
C++
#include <bits/stdc++.h>using namespace std;bool makeEqual(vector<string> &words){int arr[26] = {0};for (int i = 0; i < words.size(); i++){for (int j = 0; j < words[i].size(); j++){arr[words[i][j] - 'a']++;}}for (int i = 0; i < 26; i++){if (arr[i] % words.size() != 0)return false;}return true;}int main(){vector<string> words = {"abc", "aabc", "bc"};if (makeEqual(words))cout << "true\n";elsecout << "false\n";return 0;}
No comments:
Post a Comment