39. 替换所有问号
算法原理(模拟)
思路
就是模拟这个过程就行。从前往后遍历整个字符串,找到问号之后,就用 a~z 的每一个字符去尝试替换即可。
模拟解法代码(C++)
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 || s[i - 1] != ch) && (i == n - 1 || s[i + 1] != ch)) {
s[i] = ch;
break;
}
}
}
}
return s;
}
};
40. 提莫攻击
解法(模拟 + 分情况讨论)
算法思路
模拟 + 分情况讨论。 计算相邻两个时间点的差值:
- 如果差值大于等于中毒时间,说明上次中毒可以持续
duration秒。 - 如果差值小于中毒时间,那么上次的中毒只能持续两者的差值


