模拟的介绍和使用

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

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

}

};

期待下次交流!!!

相关推荐
soragui2 分钟前
【Python】第 1 章:Python 解释器原理
开发语言·python
UAq6wn76j8 分钟前
.NET源码生成器使用SyntaxTree生成代码及简化语法
java·开发语言·.net
火飞鹰8 分钟前
封装MinIO为starter
java·数据库·spring boot
@atweiwei10 分钟前
Go语言并发编程面试题精讲(上)
java·开发语言·面试·golang·channel
不会写DN11 分钟前
使用 sync.Once 解决 Go 并发场景下的重复下线广播问题
开发语言·网络·golang
_MyFavorite_14 分钟前
JAVA重点基础、进阶知识及易错点总结(36)Lombok 实战 + 阶段总结
java·开发语言
汀、人工智能18 分钟前
[特殊字符] 第27课:环形链表II
数据结构·算法·链表·数据库架构··环形链表ii
会编程的土豆18 分钟前
【数据结构与算法】二叉树大总结
数据结构·算法·leetcode
xyq202426 分钟前
过滤器模式
开发语言