来了题简单的,简直是力扣对我的怜悯……
1、先看题
其实,读完标题你就读完题目了。
是的,核心问题就是让你将给出的字符串中的所有的 ? 替换为小写的英文字母。
当然,有唯一一点限制,就是连续的字符不能相同。
2、思路
由于题目保证了原本的字符串不会有重复,所以只要我们替换 ? 时,不将它替换为和前一个和后一个字符一样就可以了。
而具体替换为什么字母,题目不在意,我们也不用在意什么,就从最开头的 a 开始吧。
3、直接动手
class Solution {
private static char QUESTION = '?';
public String modifyString(String s) {
StringBuilder sb = new StringBuilder(s);
for (int i = 0; i < sb.length(); i++) {
if (sb.charAt(i) == QUESTION) {
char before = 0;
char after = 0;
//前一个没有越界时
if (i - 1 >= 0) {
before = sb.charAt(i - 1);
}
//后一个没有越界时
if (i + 1 < sb.length()) {
after = sb.charAt(i + 1);
}
char replace = 'a';
//当要替换的字母和相邻字母一样时,替换为下一个英文字母
while (replace == before || replace == after) {
replace++;
}
sb.setCharAt(i, replace);
}
}
return sb.toString();
}
}
4、解读
基本就是如此了,我们遍历字符串上的所有字符,判断其是否为 ? 。
如果是的话,就获取其前一个和后一个字符,注意超出字符范围的情况。
然后从字母 a 开始,与前后字符判断是否相同,如果有相同就+1,让它变为相邻的其他字母,直到出现不相同的情况即可。
5、提交
6、康康大牛
不愧是今天的题,应该玩不出什么花样了,就算是百花齐放的大牛们,也没有什么骚操作了。
总之今天则简单题中的简单题嘛,真的有人做不出来吗?
7、总结
感觉今天的题就是来给我这种被昨天的难题打击到的小白回回血的。
让你重拾一点信心,然后明天继续重拳出击。