美文网首页
2023-01-13【c++】【Leecode】2287. 重排

2023-01-13【c++】【Leecode】2287. 重排

作者: 持刀的要迟到了 | 来源:发表于2023-01-12 12:55 被阅读0次

2287. 重排字符形成目标字符串 - 力扣(LeetCode)

class Leecode
{
public:
    int rearrangeCharacters(string s, string target)
    {
        int sLen = s.length();
        int tarLen = target.length();

        const char* sArr = s.c_str();
        const char* tarArr = target.c_str();

        // key:target唯一char value[0]:target唯一char需要个数 value[1]:s拥有唯一char个数
        map<char, int*> matchMap;
        // 根据target初始化数据结构
        for (size_t i = 0; i < tarLen; ++i)
        {
            char curChar = target[i];
            map<char, int*>::iterator pair = matchMap.find(curChar);
            if (pair == matchMap.end())
            {// 不存在
                int* toAdd = new int[2]{ 1, 0 };
                matchMap[curChar] = toAdd;
            }
            else
            {// 存在
                matchMap[curChar][0]++;
            }
        }

        // 根据s向字典表中塞入
        for (size_t i = 0; i < sLen; ++i)
        {
            char curChar = sArr[i];
            map<char, int*>::iterator pair = matchMap.find(curChar);
            if (pair == matchMap.end())
            {// 不存在
            }
            else
            {// 存在
                matchMap[curChar][1]++;
                continue;
            }
        }

        // 遍历字典表,value的0和1取余,得到最小余数返回
        int minCount = -1;
        for (map<char, int*>::iterator it = matchMap.begin(); it != matchMap.end(); ++it)
        {
            int* value = it->second;
            int charCount = value[1] / value[0];
            if (minCount == -1)
            {
                minCount = charCount;
            }
            else
            {
                if (charCount < minCount)
                {
                    minCount = charCount;
                }
            }
        }

        return minCount;
    }

};

相关文章

  • 2023-01-13【c++】【Leecode】2287. 重排

    2287. 重排字符形成目标字符串 - 力扣(LeetCode)[https://leetcode.cn/prob...

  • 2018-07-12

    C++ map hashmap java hashmap 对比分析 首先 这个是在做leecode上的两数之和时遇...

  • 算法分享

    字符串 1.字符串反转 Leecode3442.有效的括号 Leecode203.验证回文串 Leecode125...

  • iOS开发-百度一面总结

    1. 二进制重排 1.1 clang 插桩具体如何做的 1.2 c++ 方法 clang 插桩能否取到? 不能可以...

  • 寻找旋转排序数组中的最小值 II

    leecode 154

  • 【学习】mysql学习

    20190528 一、数据分析深入浅出 二、mysql必知必会 三、leecode题库 刷leecode数据库题,...

  • 内存指令重排以及顺序一致性

    当使用c/c++编写lock-free代码时,必须要非常小心注意到内存指令可能会被重排了。否则会得到意想不到的结果...

  • java内存模型

    《深入理解java内存模型》-笔记 java各线程共享使用主内存,通过共享内存通信 重排序重排序.png编译器重排...

  • WebFlux 响应式编程

    在执行程序时,为了提供性能,处理器和编译器常常会对指令进行重排序。重排序分为编译器重排序和处理器重排序两种。•编译...

  • 回南天再现

    2023-01-13 阴有小雨 周五 “这地板怎么还没干啊?”早上起来,我看到昨晚拖过的地板,竟然还...

网友评论

      本文标题:2023-01-13【c++】【Leecode】2287. 重排

      本文链接:https://www.haomeiwen.com/subject/oyqwcdtx.html