跳到主要内容

2287.重排字符形成目标字符串

链接:2287.重排字符形成目标字符串
难度:Easy
标签:哈希表、字符串、计数
简介:从 s 中取出字符并重新排列,返回可以形成 target 的 最大 副本数。

题解 1 - cpp

  • 编辑时间:2023-01-13
  • 内存消耗:6MB
  • 编程语言:cpp
  • 解法介绍:遍历。
class Solution {
public:
int rearrangeCharacters(string s, string target) {
int l1[26] = {0}, l2[26] = {0}, ans = 0x7fffffff;
for (auto &c : s) l1[c - 'a']++;
for (auto &c : target) l2[c - 'a']++;
for (int i = 0; i < 26; i++) {
if (l2[i] == 0) continue;
ans = min(ans, l1[i] / l2[i]);
}
return ans;
}
};

题解 2 - rust

  • 编辑时间:2023-01-13
  • 内存消耗:2.2MB
  • 编程语言:rust
  • 解法介绍:同上。
impl Solution {
pub fn rearrange_characters(s: String, target: String) -> i32 {
let mut ans = i32::MAX;
let (mut l1, mut l2) = ([0; 26], [0; 26]);
s.chars().for_each(|c| {
l1[c as usize - 'a' as usize] += 1;
});
target.chars().for_each(|c| {
l2[c as usize - 'a' as usize] += 1;
});
for i in 0..26 {
if l2[i] != 0 {
ans = ans.min(l1[i] / l2[i]);
}
}
ans
}
}