模拟的介绍和使用

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

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];

}

};

期待下次交流!!!

相关推荐
二哈赛车手3 小时前
新人笔记---ApiFox的一些常见使用出错
java·笔记·spring
为何创造硅基生物3 小时前
C语言 结构体内存对齐规则(通俗易懂版)
c语言·开发语言
吃好睡好便好3 小时前
在Matlab中绘制横直方图
开发语言·学习·算法·matlab
栗子~~3 小时前
JAVA - 二层缓存设计(本地缓冲+redis缓冲+广播所有本地缓冲失效) demo
java·redis·缓存
星寂樱易李3 小时前
iperf3 + Python-- 网络带宽、网速、网络稳定性
开发语言·网络·python
YDS8294 小时前
DeepSeek RAG&MCP + Agent智能体项目 —— RAG知识库的搭建和接口实现
java·ai·springboot·agent·rag·deepseek
仰泳之鹅4 小时前
【C语言】自定义数据类型2——联合体与枚举
c语言·开发语言·算法
之歆4 小时前
DAY_12JavaScript DOM 完全指南(二):实战与性能篇
开发语言·前端·javascript·ecmascript
未若君雅裁5 小时前
MyBatis 一级缓存、二级缓存与清理机制
java·缓存·mybatis
cen__y5 小时前
Linux12(Git01)
linux·运维·服务器·c语言·开发语言·git