用 Python 编写程序,求出最小数,其中没有两个相邻的数字相同
pythonserver side programmingprogramming更新于 2026/1/3 12:28:17
假设我们有一个字符串 s,其中有四个可能的字符"1"、"2"、"3"和"?"。我们可以用"1"、"2"和"3"中的任意一个来代替"?"。我们必须找到最小的可能数字,使得没有两个相邻的数字是相同的。
因此,如果输入为 s = "2??3?",则输出为 21231
要解决这个问题,我们将遵循以下步骤 −
- i := 0
- s := s 中的元素列表
- 如果 s 的大小 < 2,则
- 如果 s[i] 与 "?" 相同,则
- 返回 "1"
- 如果 s[i] 与 "?" 相同,则
- 当 i < s 的大小时,执行
- 如果 s[i] 与 "?" 相同,则
- 如果 i 与 0 相同,则
- 当 s[i + 1] 不为 "1" 时,s[i] := "1" 否则为 "2"
- 否则当 i > 0 且 i <= s - 2 的大小时,则
- 如果 s[i - 1] 与 "1" 相同,则
- 如果 s[i + 1] 与 "2" 相同,则
- s[i] := "3"
- 否则,
- s[i] := "2"
- 如果 s[i + 1] 与 "2" 相同,则
- 否则,当 s[i - 1] 与"2"相同时,则
- 如果 s[i + 1] 与"2"相同,则
- s[i] := "3"
- 否则,
- s[i] := "1"
- 如果 s[i + 1] 与"2"相同,则
- 否则,当 s[i - 1] 与"3"相同时,则
- 如果 s[i + 1] 与"2"相同,则
- s[i] := "2"
- 否则,
- s[i] := "1"
- 如果 s[i + 1] 与"2"相同,则
- 如果 s[i - 1] 与 "1" 相同,则
- 否则,
- s[i] := "1" 当 s[i - 1] 不为 "1" 否则为 "2"
- 如果 i 与 0 相同,则
- i := i + 1
- 如果 s[i] 与 "?" 相同,则
- 将 s 的项连接成一个字符串并返回
示例
让我们看看下面的实现以便更好地理解 −
def solve(s): i = 0 s = list(s) if len(s) < 2: if s[i] == "?": return "1" while i < len(s): if s[i] == "?": if i == 0: s[i] = "1" if s[i + 1] != "1" else "2" elif i > 0 and i <= len(s) - 2: if s[i - 1] == "1": if s[i + 1] == "2": s[i] = "3" else: s[i] = "2" elif s[i - 1] == "2": if s[i + 1] == "1": s[i] = "3" else: s[i] = "1" elif s[i - 1] == "3": if s[i + 1] == "1": s[i] = "2" else: s[i] = "1" else: s[i] = "1" if s[i - 1] != "1" else "2" i += 1 return "".join(s) s = "2??3?" print(solve(s))
输入
"2??3?"
输出
21231
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

