编程以形成最小的数字,其中在 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