模拟算法及其优化

第一题 替换所有问号

模拟算法及其优化_第1张图片

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

class Solution {
public:
    string modifyString(string s) {

        string ret;
        for(int i=0;i=s.size()) ret+='a';
                else ret+=s[i];

            }
            else
            {
                if(s[i]=='?')
                {                
                    for(char a='a';a<='z';a++)
                    {
                        if(ret[i-1]!=a&&i+1=s.size()&&ret[i-1]!=a)
                        {
                            ret+=a;
                            break;
                        }
                    }

                }
                else ret+=s[i];

            }
        }

        return ret;
    }
};

第二题 提莫攻击

模拟算法及其优化_第2张图片

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

class Solution {
public:
    int findPoisonedDuration(vector& timeSeries, int duration) {
        int total=0;
        total+=duration;
        for(int i=1;i

第三题 字形变换

模拟算法及其优化_第3张图片

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

class Solution {
public:
    string convert(string s, int numRows) {
        if(numRows==1) return s;//这里不进行特判一定会超时
        string ret;
        int d=(numRows-1)*2;//画图观察第一行的间距差

        for(int i=0;i rows(numRows);
//         int i = 0, flag = -1;
//         for (char c : s) {
//             rows[i].push_back(c);
//             if (i == 0 || i == numRows -1)
//                 flag = - flag;
//             i += flag;
//         }
//         string res;
//         for (const string &row : rows)
//             res += row;
//         return res;
//     }
// };

第四题 外观数列

模拟算法及其优化_第4张图片

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

class Solution {
public:
    string countAndSay(int n) {
        string ret="1";
        for(int i = 1;i < n;i ++)
        {
            int left = 0, right = 0;
            string tmp;
            while(right < ret.size())
            {
                while(ret[right] == ret[left]) right++;
                tmp+=to_string(right-left);
                tmp+=ret[left];
                left=right;
            }
            ret=tmp;
        }
        return ret;
    }
};

第五题 数青蛙 

模拟算法及其优化_第5张图片

模拟算法及其优化_第6张图片 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

class Solution {
public:
    int minNumberOfFrogs(string croakOfFrogs) 
    {
        int n = croakOfFrogs.size();
        vector hash(5,0);//记录蛙叫状态
        string h="croak";
        unordered_map index;//映射字符下标

        for(int i=0; i 0) hash[index['k']]--;
                hash[index['c']]++;
            }
            else
            {
                int in=index[croakOfFrogs[i]];
                if(hash[in-1] == 0) return -1;
                hash[in]++;//移动这只青蛙叫到的位置
                hash[in-1]--;
            }
        }

        for(int i=0; i<4; i++)
        {
            if(hash[i]>0) return -1;
        }
        return hash[4];
    }
};

 模拟算法及其优化_第7张图片

你可能感兴趣的:(算法)