C. Vus the Cossack and Strings(字符串 思維 位運算)

連接:http://codeforces.com/contest/1186/problem/C

 

題意:給你一個較長字符串a以及一個較短字符串b,在a中取與b長度相等的子串,比較子串與b字符串中有幾組字符不一樣的個數是偶數個的。

思路;首先字符串都是由0 1組成的,可以用異或來求,(兩個數字異或,相同爲 0 ,不同爲 1 ,兩次異或同一個數字,相當於沒有異或過該數字)

#include <bits/stdc++.h>

using namespace std;


char s[N],d[N];
int main()
{
    scanf("%s%s",s,d);
    int len1=strlen(s);
    int len2=strlen(d);
    int ans=0;int sum=0;
    for(int i=0;i<len2;i++)
    {
        ans^=s[i]^d[i];
    }
    if(ans%2==0)
        sum++;
    for(int i=len2;i<len1;i++)
    {
        ans^=s[i-len2]^s[i];
        if(ans%2==0)
            sum++;
    }
    cout<<sum;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章