编程以形成最小的数字,其中在 Python 中没有两个相邻的数字相同
假设我们有一个字符串s,它有四个可能的字符“1”、“2”、“3”和“?”。我们可以将“1”、“2”和“3”中的任何一个放在“?”的位置。我们必须找到我们可以制作的最小可能数字,使得没有两个相邻的数字相同。
因此,如果输入类似于s="2??3?",那么输出将是21231
示例
让我们看看以下实现以获得更好的理解-
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