Case of the Zeros and Ones

题目链接:http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id=187940
题意:

       单组案例,输入由0和1组成的字符串,相邻的字符如果一方为0,另一方为1,则移除这两个字符,问将字符串满足条件的字符完全移除后字符串长度。

案例:

         Sample

         Input

     4

1100
        Output
     0
        Input
     5

01010
       Output
     1
        Input
     8

11101111
        Output
     6

分析:

       刚看到这题时,我首先想到的是栈,所以用栈的方式做了一次,不过输出总是出错,可能编译部分出错,但自己没找到。后来发现这题其实很简单,不用观察相邻的字符是否符合条件,只需判断0和1的个数分别为多少,再拿大的一方减去小的一方即可。具体原因,稍稍转变思想就可以想到了。

源代码:

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 using namespace std;
 5 const int maxn=200000;
 6 char a[maxn];
 7 int main()
 8 {
 9     int n,i,j=0,k=0;
10     cin>>n;
11     scanf("%s",a);
12     for(i=0;i<n;i++)
13     {    
14         if(a[i]=='0')//找出字符串中0的个数
15             j=j+1;
16         else if(a[i]=='1') //找出字符串中1的个数
17             k=k+1;
18     }
19     if(k>j)//输出最终结果
20        cout<<k-j<<endl;
21     else cout<<j-k<<endl;
22     return 0;
23 }

 

posted @ 2015-08-01 15:32  ~瞬间*  阅读(155)  评论(0编辑  收藏  举报