📜  门| GATE-CS-2003 |第 61 题(1)

📅  最后修改于: 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)。