美文网首页
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. 重排

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