2019春季暑期实习生正式批招聘笔试【腾讯】(回忆版)第一题

题目描述

给个字符串,这个字符串是由1和0组成,也就是说在这个字符串中只有1和0。

现在用一种消除方法:当1和0碰到一起的时候就会消除。无论1在前面,还是0在前面

不知道有没有玩过祖玛

当图中黄球消除的时候,蓝球会碰到一起,也会消除。

例如当给字符串11110000,这种情况下,会全部消除干净。

例如当给字符串100101,这种情况下,会全部消除干净。

例如当给字符串01010,这种情况下,会留下最后的0。

输入

第一行 一个整数 n ,表示这个字符串的长度

第二行输入一个由1和0组成的字符串

输出

消除后剩下的长度

样例输入

8

11110000

样例输出

0

解题代码

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        String string = '2' + scanner.next();
        boolean[] b = new boolean[n + 1];
        int c = 0;
        char start = '2';
        int start_index = 0;


        for (int i = 0; i <= n; i++) {

            char next = string.charAt(i);

            if (start == '1' && next == '0' || start == '0' && next == '1') {
                c += 2;
                b[start_index] = true;
                b[i] = true;
                for (int j = i; j >= 0; j--) {
                    if (!b[j]) {
                        start_index = j;
                        break;
                    }
                }

                start = string.charAt(start_index);
            } else {
                start_index = i;
                start = string.charAt(start_index);

            }

        }
        System.out.println(n - c);
        
    }
}

 

结果:

 

通过全部样例



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

康雨城

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值