链接:https://ac.nowcoder.com/acm/contest/18462/L
来源:牛客网
题目描述
Given a string consisting of lowercase letters. We say the string is evenly separated if and only if there is an even number of characters between every pair of the same characters. For example, abba is evenly separated while aabba is not. For this problem, you will write a program to determine whether the given string s is evenly separated or not.
输入描述:
Input consists of a single line containing the string of at most 1,000,000 lower-case letters to check if it is evenly separated.
输出描述:
The output line consists of the word YES if the string is evenly separated or NO if the string is not evenly separated.
示例1
输入
复制
abba
输出
复制
YES
示例2
输入
复制
aabba
输出
复制
NO
示例3
输入
复制
abcdefyzfedcba
输出
复制
YES
#include<iostream>
#include<vector>
#include <string>
using namespace std;
struct P{
int k=0;
vector<int> d;
};
vector<P> Q;
P now;
int main(){
for(int i=0;i<26;i++){
Q.push_back(now);
}
string s;
cin>>s;
for(int i=0;i<s.size();i++){
Q[s[i]-'a'].k++;
Q[s[i]-'a'].d.push_back(i);
}
for(int i=0;i<26;i++){
for(int j=0;j<Q[i].k;j++){
for(int q=j+1;q<Q[i].k;q++){
if((Q[i].d[q]-Q[i].d[j]-1)%2!=0)
{
cout<<"NO";
return 0;
}
}
}
}
cout<<"YES";
return 0;
}