模拟算法
模拟算法就是根据其题目进行一步一步操作即可,相对而言较简单,但是边界情况要处理好(细节问题)。
替换所有的问号
题目解析:将 s 字符串中的?全部替换成小写字母,并且替换?的字符不可以与原本?相邻的两个字符相等。
模拟:只需要根据题目条件,找出所有?,并将其替换成符合要求的小写字母即可。
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 String.valueOf(arr);
}
}
时间复杂度:O(n) 空间复杂度:O(n)


