相关题解
1.1替换所有的问号
算法思路:
模拟。从前往后遍历整个字符串,找到问号后,用 a~z 的每一个字符尝试替换即可。
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; } };
2.2提莫攻击
算法思路:
模拟 + 分情况讨论。
计算相邻两个时间点的差值:
- 若差值大于等于中毒时间,说明上次中毒可以持续 duration 秒;
- 若差值小于中毒时间,说明此时发生了中毒叠加,那么上次的中毒只能持续两者的差值。
class Solution { public: int findPoisonedDuration(vector<int>& timeSeries, int duration) { int ret=0; for(int i=1;i<timeSeries.size();i++){ x=timeSeries[i]-timeSeries[i]; (x<=duration) ret+=x; ret+=duration; }


