题目
类型:字符串
解题思路
尝试对每个 s[i] 进行替换,能够替换的前提是 s[i] 为 ?,且替换字符与前后字符(若存在)不同,由于只需要确保与前后字符不同,因此必然最多在 3 个字符内找到可替换的值。
代码
class Solution {
public String modifyString(String s) {
char[] cs = s.toCharArray();
int n = cs.length;
for (int i = 0; i < n; i++) {
for (int c = 0; c < 3 && cs[i] == '?'; c++) {
boolean ok = true;
if (i - 1 >= 0 && cs[i - 1] == c + 'a') ok = false;
if (i + 1 < n && cs[i + 1] == c + 'a') ok = false;
if (ok) cs[i] = (char)(c + 'a');
}
}
return String.valueOf(cs);
}
}