【模拟】替换所有的问号(easy)

替换所有的问号(easy)

  • 题⽬描述:
  • 解法(模拟):
    • 算法思路:
    • 算法代码:

题⽬链接:1576. 替换所有的问号

题⽬描述:

给你⼀个仅包含⼩写英⽂字⺟和 ‘?’ 字符的字符串 s,请你将所有的 ‘?’ 转换为若⼲⼩写字⺟,使最终
的字符串不包含任何 连续重复 的字符。
注意:你 不能 修改⾮ ‘?’ 字符。
题⽬测试⽤例保证 除 ‘?’ 字符 之外,不存在连续重复的字符。
在完成所有转换(可能⽆需转换)后返回最终的字符串。如果有多个解决⽅案,请返回其中任何⼀个。可以证明,在给定的约束条件下,答案总是存在的。
⽰例 1:
输⼊:s = “?zs”
输出:“azs”
解释:该⽰例共有 25 种解决⽅案,从 “azs” 到 “yzs” 都是符合题⽬要求的。只有 “z” 是⽆效的修
改,因为字符串 “zzs” 中有连续重复的两个 ‘z’ 。
⽰例 2:
输⼊:s = “ubv?w”
输出:“ubvaw”
解释:该⽰例共有 24 种解决⽅案,只有替换成 “v” 和 “w” 不符合题⽬要求。因为 “ubvvw” 和"ubvww" 都包含连续重复的字符。
提⽰:
1 <= s.length <= 100
s 仅包含⼩写英⽂字⺟和 ‘?’ 字符

解法(模拟):

算法思路:

纯模拟。从前往后遍历整个字符串,找到问号之后,就⽤ a ~ z 的每⼀个字符去尝试替换即可。

算法代码:

class Solution{
 public String modifyString(String ss) {
	 char[] s = ss.toCharArray();
	 int n = s.length;
	 for(int i = 0; i < n; i++)
	 {
		 if(s[i] == '?') {// 替换
			 for(char ch = 'a'; ch <= 'z'; ch++){
				 if((i == 0 || ch != s[i - 1]) && (i == n - 1 || ch != s[i + 1])){
					 s[i] = ch;
					 break;
				 }
			 }
		 }
	 }
	 return String.valueOf(s);
 }
}

你可能感兴趣的:(算法,算法)