元旦假期玩的嗨的不行,该收收心回来继续做题了~老规矩先上链接。
力扣1576替换所有的问号https://leetcode-cn.com/problems/replace-all-s-to-avoid-consecutive-repeating-characters/今天是个简单题,思路上也很简单,注意以下开头和结尾的特殊情况,以及连续多个?相连的情况即可。代码如下:
package cn.daycode.leetcode;
public class ModifyString {
public static void main(String[] args) {
Solution s = new Solution();
String str = "?????????????????";
System.out.println(s.modifyString(str));
}
static class Solution {
public String modifyString(String s) {
StringBuilder res = new StringBuilder("");
// 遍历字符串s,如果某一位不是'?'就拼接到res后面,是s则进入判断
for (int i = 0; i < s.length(); i++) {
if(s.charAt(i) == '?'){
char[] temp = new char[2];
char c = 'a';
// 不是首位,就把替换后的前一位字符填入临时数组的第一个位置
if (i>0){
temp[0] = res.charAt(i-1);
}
// 不是尾位,就把后面一个字符填入临时数组的第二个位置
if (i<s.length()-1){
temp[1] = s.charAt(i+1);
}
// 从a开始的26个字母找跟前后(如果存在)都不同的字母拼接到res后
for (int j = 0;; j++) {
if (c+j !=temp[0] && c+j != temp[1]){
res.append((char)(c+j));
break;
}
}
}else {
// 不是'?'就直接拼接
res.append(s.charAt(i));
}
}
return res.toString();
}
}
}
今天的文章【每日一题】Day0016:力扣题库NO.1576. 替换所有的问号(java实现)分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/27985.html