2287.重排字符形成目标字符串
链接:2287.重排字符形成目标字符串
难度:Easy
标签:哈希表、字符串、计数
简介:从 s 中取出字符并重新排列,返回可以形成 target 的 最大 副本数。
题解 1 - 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
    }
}
题解 2 - 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;
    }
};