題目:給你乙個僅包含小寫英文本母和 『?』 字元的字串 s,請你將所有的 『?』 轉換為若干小寫字母,使最終的字串不包含任何 連續重複的字元。
注意:你 不能 修改非 『?』 字元。
題目測試用例保證 除 『?』 字元 之外,不存在連續重複的字元。
在完成所有轉換(可能無需轉換)後返回最終的字串。如果有多個解決方案,請返回其中任何乙個。可以證明,在給定的約束條件下,答案總是存在的。
示例 1:
輸入:s =
"?zs"
輸出:"azs"
解釋:該示例共有 25 種解決方案,從 "azs" 到 "yzs" 都是符合題目要求的。
只有 "z" 是無效的修改,因為字串 "zzs" 中有連續重複的兩個 'z' 。
示例 2:
輸入:s =
"ubv?w"
輸出:"ubvaw"
解釋:該示例共有 24 種解決方案,只有替換成 "v" 和 "w" 不符合題目要求。
因為 "ubvvw" 和 "ubvww" 都包含連續重複的字元。
class solution
}return new string
(chars,
1,chars.length-2)
;}}
首先,將字串s放入陣列中,然後開始遍歷字串陣列(因為新增了哨兵,所以字串位 s=
"*+字串內容+*"
)在遍歷的同時,判斷每乙個字串是否為'?'
,若是的話,獲取當前元素的前乙個元素和後乙個元素的字元,
既chars[i-
1]和chars[i+1]
;由題目要求,'?'不能替換為與前後字元相同的字元。通過while迴圈,
從a開始找不和chars[i-
1]相同,也不和chars[i+
1]相同的字元。找到元素替換即可。
最後在去掉開始時,加的兩個哨兵,便是所求的字元。
class solution
}return new string
(charr);}
public char
replacechar
(char lch,
char rch)
return res;
}
public char
replacechar
(char ch)
return res;
}}
對於替換的'?'
,可能在存在的位置有3中情況:(1
) 首位,替換與第二個字元不同的字元(2
) 中間,替換與前後字元都不相同的字元(3
) 末尾,替換與前邊字元不同的字元
根據這個思路,遍歷字串,首先判斷在首位的情況,然後判斷在中間的情況,最後判斷在末尾的情況,
分別處理。
1576 替換所有的問號
題目描述 給你乙個僅包含小寫英文本母和 字元的字串 s,請你將所有的 轉換為若干小寫字母,使最終的字串不包含任何 連續重複 的字元。注意 你 不能 修改非 字元。題目測試用例保證 除 字元 之外,不存在連續重複的字元。在完成所有轉換 可能無需轉換 後返回最終的字串。如果有多個解決方案,請返回其中任何...
1576 替換所有的問號
給你乙個僅包含小寫英文本母和 字元的字串 s,請你將所有的 轉換為若干小寫字母,使最終的字串不包含任何 連續重複 的字元。注意 你 不能 修改非 字元。題目測試用例保證 除 字元 之外,不存在連續重複的字元。在完成所有轉換 可能無需轉換 後返回最終的字串。如果有多個解決方案,請返回其中任何乙個。可以...
1576 替換所有的問號(字串)
1.問題描述 給你乙個僅包含小寫英文本母和 字元的字串 s,請你將所有的 轉換為若干小寫字母,使最終的字串不包含任何 連續重複 的字元。注意 你 不能 修改非 字元。題目測試用例保證 除 字元 之外,不存在連續重複的字元。在完成所有轉換 可能無需轉換 後返回最終的字串。如果有多個解決方案,請返回其中...