返回介绍

solution / 1800-1899 / 1897.Redistribute Characters to Make All Strings Equal / README

发布于 2024-06-17 01:03:13 字数 3326 浏览 0 评论 0 收藏 0

1897. 重新分配字符使所有字符串都相等

English Version

题目描述

给你一个字符串数组 words(下标 从 0 开始 计数)。

在一步操作中,需先选出两个 不同 下标 ij,其中 words[i] 是一个非空字符串,接着将 words[i] 中的 任一 字符移动到 words[j] 中的 任一 位置上。

如果执行任意步操作可以使 words 中的每个字符串都相等,返回 true_ _;否则,返回_ _false

 

示例 1:

输入:words = ["abc","aabc","bc"]
输出:true
解释:words[1] 中的第一个 'a' 移动到 words[2] 的最前面。
使 words[1] = "abc" 且 words[2] = "abc" 。
所有字符串都等于 "abc" ,所以返回 true

示例 2:

输入:words = ["ab","a"]
输出:false
解释:执行操作无法使所有字符串都相等。

 

提示:

  • 1 <= words.length <= 100
  • 1 <= words[i].length <= 100
  • words[i] 由小写英文字母组成

解法

方法一

class Solution:
  def makeEqual(self, words: List[str]) -> bool:
    counter = Counter()
    for word in words:
      for c in word:
        counter[c] += 1
    n = len(words)
    return all(count % n == 0 for count in counter.values())
class Solution {
  public boolean makeEqual(String[] words) {
    int[] counter = new int[26];
    for (String word : words) {
      for (char c : word.toCharArray()) {
        ++counter[c - 'a'];
      }
    }
    int n = words.length;
    for (int i = 0; i < 26; ++i) {
      if (counter[i] % n != 0) {
        return false;
      }
    }
    return true;
  }
}
class Solution {
public:
  bool makeEqual(vector<string>& words) {
    vector<int> counter(26, 0);
    for (string word : words) {
      for (char c : word) {
        ++counter[c - 'a'];
      }
    }
    int n = words.size();
    for (int count : counter) {
      if (count % n != 0) return false;
    }
    return true;
  }
};
func makeEqual(words []string) bool {
  counter := [26]int{}
  for _, word := range words {
    for _, c := range word {
      counter[c-'a']++
    }
  }
  n := len(words)
  for _, count := range counter {
    if count%n != 0 {
      return false
    }
  }
  return true
}
function makeEqual(words: string[]): boolean {
  let n = words.length;
  let letters = new Array(26).fill(0);
  for (let word of words) {
    for (let i = 0; i < word.length; ++i) {
      ++letters[word.charCodeAt(i) - 97];
    }
  }

  for (let i = 0; i < letters.length; ++i) {
    if (letters[i] % n != 0) {
      return false;
    }
  }
  return true;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文