题意:
给你一个仅包含小写英文字母和 '?'
字符的字符串 s
<var> </var>,请你将所有的 '?'
转换为若干小写字母,使最终的字符串不包含任何 连续重复 的字符。
注意:你 不能 修改非 '?'
字符。
题目测试用例保证 除 '?'
字符 之外,不存在连续重复的字符。
在完成所有转换(可能无需转换)后返回最终的字符串。如果有多个解决方案,请返回其中任何一个。可以证明,在给定的约束条件下,答案总是存在的。
示例 1:
输入:s = "ubv?w" 输出:"ubvaw" 解释:该示例共有 24 种解决方案,只有替换成 "v" 和 "w" 不符合题目要求。因为 "ubvvw" 和 "ubvww" 都包含连续重复的字符。
解题思路:
基本上就直接判断
class Solution {
/**
* @param String $s
* @return String
*/
function modifyString($s) {
$n = strlen($s);
for($i = 0; $i < $n; $i++) {
if($s[$i] == '?') {
if($i == 0) {
if($s[$i+1] != "a") {
$s[$i] = "a";
} else {
$s[$i] = "b";
}
}
elseif($i == $n-1) {
if($s[$i-1] != "a") {
$s[$i] = "a";
} else {
$s[$i] = "b";
}
}
else{
if($s[$i-1] != "a" && $s[$i+1] != "a") {
$s[$i] = "a";
} else if($s[$i-1] == "a" && $s[$i+1] == "a"){
$s[$i] = "b";
} elseif($s[$i+1] == "a") {
if($s[$i-1] == "b") {
$s[$i] = "c";
} else {
$s[$i] = "b";
}
} elseif($s[$i-1] == "a") {
if($s[$i+1] == "b") {
$s[$i] = "c";
} else {
$s[$i] = "b";
}
}
}
}
}
return $s;
}
}