模拟的介绍和使用

模拟就是对某一个过程进行简单的演算,通过找到一定的规律,来简化代码,提高时间复杂度等。

class Solution {

public:

string modifyString(string s) {

int n=s.size();

for(int i=0;i<n;i++){

if(s[i]=='?'){

for(char ch='a';ch<='z';ch++){

if((i==0||ch!=s[i-1])&&(i==n-1||ch!=s[i+1])){

s[i]=ch;

break;

}

}

}

}

return s;

}

};

class Solution {

public:

int findPoisonedDuration(vector<int>& timeSeries, int duration) {

int ans = 0;

int expired = 0;

for (int i = 0; i < timeSeries.size(); ++i) {

if (timeSeries[i] >= expired) {

ans += duration;

} else {

ans += timeSeries[i] + duration - expired;

}

expired = timeSeries[i] + duration;

}

return ans;

}

};

class Solution {

public:

string convert(string s, int a) {

if(a==1) return s;

string ret;

int d=2*a-2;

int n=s.size();

for(int i=0;i<n;i+=d){

ret+=s[i];

}

for(int k=1;k<a-1;k++){

for(int i=k,j=d-k;i<n||j<n;i+=d,j+=d){

if(i<n) ret+=s[i];

if(j<n) ret+=s[j];

}

}

for(int i=a-1;i<n;i+=d){

ret+=s[i];

}

return ret;

}

};

class Solution {

public:

string countAndSay(int n) {

string ret="1";

for(int i=1;i<n;i++){

string a;

for(int left=0,right=0;right<ret.size();){

while(right<ret.size()&&ret[left]==ret[right]) right++;

a+=to_string(right-left)+ret[left];

left=right;

}

ret=a;

}

return ret;

}

};

class Solution {

public:

int minNumberOfFrogs(string croakOfFrogs) {

string t="croak";

int n=t.size();

vector<int> hash(n);

unordered_map<char,int> index;

for(int i=0;i<n;i++)

index[t[i]]=i;

for(auto ch: croakOfFrogs){

if(ch=='c'){

if(hash[n-1]!=0) hash[n-1]--;

hash[0]++;

}else{

int i=index[ch];

if(hash[i-1]==0) return -1;

hash[i-1]--;

hash[i]++;

}

}

for(int i=0;i<n-1;i++){

if(hash[i]!=0) return -1;

}

return hash[n-1];

}

};

期待下次交流!!!

相关推荐
无限进步_2 小时前
深入解析vector:一个完整的C++动态数组实现
c语言·开发语言·c++·windows·git·github·visual studio
云泽8082 小时前
蓝桥杯算法精讲:贪心算法之区间问题深度剖析
算法·贪心算法·蓝桥杯
tankeven2 小时前
HJ129 小红的双生数
c++·算法
万能的小裴同学2 小时前
C++ 简易的FBX查看工具
开发语言·c++·算法
Boop_wu2 小时前
[Java 算法] 前缀和(2)
算法·哈希算法·散列表
菜菜小狗的学习笔记2 小时前
剑指Offer算法题(二)栈、队列、堆
java·开发语言
李宥小哥2 小时前
SQLite04-表数据管理
java·jvm·数据库
李宥小哥2 小时前
SQLite05-常用函数
java·开发语言·jvm
huohuopro2 小时前
idea配置servlet项目
java·servlet·intellij-idea