📅  最后修改于: 2023-12-03 14:58:25.339000             🧑  作者: Mango
门(GATE-CS-2003)是一道经典的计算机科学题目,以下是题目的描述:
有一扇门,门上有n个按钮,每个按钮都有两种状态:打开和关闭。一开始门是关闭的。每次按下一个按钮,它的状态会切换:如果按钮是打开的,按下后它会关闭;如果按钮是关闭的,按下后它会打开。我们按照按钮的编号按顺序一次一次地按下它们。
现在给出一个长度为n的字符串,表示按钮的初始状态。其中字符串中每个字符为'0'或'1',分别表示按钮的关闭状态和打开状态。我们需要求出按下所有按钮后的最终状态。
编写一个程序,接受一个长度为n的字符串,并将按下所有按钮后的最终状态输出。
输入为一个长度为n的字符串s,(1 ≤ n ≤ 10^5)。字符串中每个字符为'0'或'1',分别表示按钮的关闭状态和打开状态。
输出为一个长度为n的字符串,表示按下所有按钮后的最终状态。
输入:
1010101
输出:
0101010
对于每个按钮,我们只需将其当前状态翻转即可。使用一个循环遍历字符串,碰到字符'0'就将其替换为'1',碰到字符'1'就将其替换为'0'。
以下是一种可能的实现方式:
def flip_buttons(s):
result = ''
for char in s:
if char == '0':
result += '1'
else:
result += '0'
return result
该解法的时间复杂度为O(n),空间复杂度为O(n)。