题目

类型:字符串
image.png

解题思路

尝试对每个 s[i] 进行替换,能够替换的前提是 s[i] 为 ?,且替换字符与前后字符(若存在)不同,由于只需要确保与前后字符不同,因此必然最多在 3 个字符内找到可替换的值。

代码

  1. class Solution {
  2. public String modifyString(String s) {
  3. char[] cs = s.toCharArray();
  4. int n = cs.length;
  5. for (int i = 0; i < n; i++) {
  6. for (int c = 0; c < 3 && cs[i] == '?'; c++) {
  7. boolean ok = true;
  8. if (i - 1 >= 0 && cs[i - 1] == c + 'a') ok = false;
  9. if (i + 1 < n && cs[i + 1] == c + 'a') ok = false;
  10. if (ok) cs[i] = (char)(c + 'a');
  11. }
  12. }
  13. return String.valueOf(cs);
  14. }
  15. }