字母连续
链接:https://ac.nowcoder.com/acm/contest/1080/A
题目描述 > tokitsukaze有一个长度为n,只包含小写字母的字符串S。 对于每一种字母,若同种字母都连在一起,tokitsukaze会感到心情愉悦。 若tokitsukaze会感到心情愉悦,请输出”YES”,否则输出”NO”。(均不含引号。)
输入描述: > 第一行输入一个正整数n,(1≤n≤100)。 接下来一行输入一个长度为n的字符串S,’a’≤S[i]≤’z’。
输出描述:
输出一行,”YES”,或者”NO”。
示例1 输入
1
a
输出
YES
示例2
输入
2
ab
输出
YES
示例3
输入
3
aba
输出
NO 先定义一个字母表,输入一个字母将字母表对应的字母标记为已出现,再次出现时如果和它前一个字母不相等则输出NO;
完整代码:
#include<iostream>
#include<string>
#include<cstring>
#include<vector>
using namespace std;
int main(){
int n;
string alp = "abcdefghijklmnopqrstuvwxyz";
while(cin>>n){
string tar;
cin>>tar;
int i,j;
int flag=1;
vector<int> b(n,0);
for(i=0;i<n;i++){
for(j=0;j<26;j++){
if(tar[i] == alp[j])
break;
}
if(b[j]==1){
if(tar[i-1]!=tar[i]){
cout<<"NO"<<endl;
flag=0;
break;
}
}
if(b[j]==0){
b[j]=1;
}
}
if(flag){
cout<<"YES"<<endl;}
}
}