您的位置:首页 > 其它

Educational Codeforces Round 38 (Rated for Div. 2) A. Word Correction

2018-02-17 13:22 701 查看
A. Word Correction
Victor tries to write his own text editor, with word correction included. However, the rules of word correction are really strange.Victor thinks that if a word contains two consecutive vowels, then it's kinda weird and it needs to be replaced. So the word corrector works in such a way: as long as there are two consecutive vowels in the word, it deletes the first vowel in a word such that there is another vowel right before it. If there are no two consecutive vowels in the word, it is considered to be correct.You are given a word s. Can you predict what will it become after correction?In this problem letters a, e, i, o, u and y are considered to be vowels.InputThe first line contains one integer n (1 ≤ n ≤ 100) — the number of letters in word s before the correction.The second line contains a string s consisting of exactly n lowercase Latin letters — the word before the correction.OutputOutput the word s after the correction.ExamplesinputCopy
5
weird
output
werd
inputCopy
4
word
output
word
inputCopy
5
aaeaa
output
a
题意:给你一个单词,从左到右进行统计,当出现连续的元音字母时删掉后一个,问你最后的结果。
思路:模拟,每碰到两个
4000
连续时,删掉后一个,同时新接合出来的位置可能还会连续,所以要继续删。
这里我用了string的erase()字符删除函数。#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll vis[30],n,flag;
string s;
int main()
{
memset(vis,0,sizeof(vis));
vis[1]=vis[5]=vis[9]=vis[15]=vis[21]=vis[25]=1; //标记元音
while(cin>>n>>s)
{
while(1) //反复遍历这个字符串,直到没有连续元音时break
{
flag=0;
for(ll i=1;i<n;i++)
{
if(vis[s[i-1]-'a'+1]&&vis[s[i]-'a'+1])
{
flag=1;
s.erase(i,1); //字符串删除函数,i是起始位置,1是要删除几个元素
}
}
if(flag==0)break; //没有连续元音break
}
cout<<s<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: