Leetcode 1576 替換所有的問號

2021-10-09 16:11:14 字數 1518 閱讀 5010

題目:給你乙個僅包含小寫英文本母和 『?』 字元的字串 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,請你將所有的 轉換為若干小寫字母,使最終的字串不包含任何 連續重複 的字元。注意 你 不能 修改非 字元。題目測試用例保證 除 字元 之外,不存在連續重複的字元。在完成所有轉換 可能無需轉換 後返回最終的字串。如果有多個解決方案,請返回其中...