题目要求替换掉全部的?字符,需要考虑到特殊字符出现在
头尾的边界情况。遍历字符串的所有元素,针对特殊字符,我们获取
当前位置的前后一个元素,然后从a开始递推,得到不与前后元素
相同的第一个元素即可。
1 public String modifyString(String s) { 2 char[] chars = s.toCharArray(); 3 for (int i = 0; i < chars.length; i++) { 4 if (chars[i] == '?') { 5 //前面一个字符 如果当前是第0个的话 字符就为‘ ’ 6 char ahead = i == 0 ? ' ' : chars[i - 1]; 7 //后面一个字符 如果当前是最后一个的话 字符就为‘ ’ 8 char behind = i == chars.length - 1 ? ' ' : chars[i + 1]; 9 //从a开始比较 如果等于前面或者后面的话 就+1 10 char temp = 'a'; 11 while (temp == ahead || temp == behind ) { 12 temp++; 13 } 14 //找到目标字符后 做替换 15 chars[i] = temp; 16 } 17 } 18 return new String(chars); 19 }