一、模拟简介
模拟就是依葫芦画瓢,题目会将如何做给出来,直接做出来就行。
做题过程:
- 先模拟算法流程,
- 再将流程转化为代码。
二、1576.替换所有的问号
题目链接:1576.替换所有的问号
题目描述:

题目解析:
- 给我们一个字符串,每除字符'?'外其它两个字符之间是不相等的,且字符全是小写字母和'?'。
- 将字符串中的'?'全部替换成小写字母。并保证两两不相等的条件。
解题思路:
- 我们直接模拟题目讲解的过程,
- 遍历字符串,找到'?'字符,就替换,
- 替换的时候,就从 26 个小写字母找跟'?'字符前后字符不相等的字符即可。
- 边界情况,在头是'?'时,只需要跟后一个字符比较,在尾是'?',只需要和前一个字符比较。
解题代码:
//时间复杂度:O(n)
//空间复杂度:O(n)
class Solution {
public String modifyString(String s) {
char[] arr = s.toCharArray();
for (int i = 0; i < arr.length; i++) {
if (arr[i] == '?') {
for (char ch = 'a'; ch <= 'z'; ch++) {
if ((i == 0 || arr[i - 1] != ch) && (i == arr.length - 1 || arr[i + 1] != ch)) {
arr[i] = ch;
break;
}
}
}
}
String.valueOf(arr);
}
}







