模拟算法
模拟算法是根据题目要求进行一步一步的操作,相对简单但需处理好边界情况。
替换所有的问号
题目解析:将字符串中的问号全部替换成小写字母,且替换后的字符不可以与原本相邻的两个字符相等。 思路:遍历字符串,找到所有问号,将其替换成符合要求的小写字母即可。
class Solution {
public String modifyString(String s) {
int n = s.length();
char[] arr = s.toCharArray();
for (int i = 0; i < n; i++) {
if (arr[i] == '?') {
for (char ch = 'a'; ch <= 'z'; ch++) {
if ((i == 0 || arr[i - 1] != ch) && (i == n - 1 || arr[i + 1] != ch)) {
arr[i] = ch;
break;
}
}
}
}
return new String(arr);
}
}
时间复杂度:O(n) 空间复杂度:O(n)
提莫攻击
题目解析:计算艾希处于中毒状态的总时间。 思路:判断相邻两次释放技能的时间差值与技能持续时间。如果差值大于等于持续时间,加上持续时间;反之加上差值。最后加上最后一次技能的持续时间。
class Solution {
public int {
;
( ; i < timeSeries.length; i++) {
timeSeries[i] - timeSeries[i - ];
(x >= duration) {
sum += duration;
} {
sum += x;
}
}
sum + duration;
}
}


