在C++中实现字符串比较时出错

问题描述 投票:0回答:1

我的字符串 s 包含0和1。为什么 AscoreBscore 零,而不是递增,给定的条件如下?

int main()
{
        long long int n;
        string s;
        cin>>n;   // 3
        cin.ignore();
        long long int siz = 2*n, Ascore = 0, Bscore = 0;
        cin>>s; // 101011
        for(int i = 0; i < siz; i++ )
        {

            if((i%2 == 0) && (s[i] == 1))
                Ascore++;
            if((i%2 == 1) && (s[i] == 1))
                Bscore++;
            if(abs(Ascore-Bscore) == 2)
                cout<<i+1<<"\n";
            if((i % 2 == siz-1) && (Ascore == Bscore))
                cout<<i+1<<"\n";


        }

}

c++ if-statement c++14
1个回答
1
投票

A string 是由 char的,所以你需要对照 char 字面意义 int例如

s[i] == '1'

而不是

s[i] == 1

1
投票

你使用的是整数1而不是字符 "1"。

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

            if((i%2 == 0) && (s[i] == '1'))
                Ascore++;
            if((i%2 == 1) && (s[i] == '1'))
                Bscore++;
            if(abs(Ascore-Bscore) == 2)
                cout<<i+1<<"\n";
            if((i % 2 == siz-1) && (Ascore == Bscore))
                cout<<i+1<<"\n";


        }
© www.soinside.com 2019 - 2024. All rights reserved.