C - Check The Texthttps://vjudge.csgrandeur.cn/problem/Gym-102263C
Roze有一个特殊的键盘,只有29个键:
-26个字母a-z键,打印26个小写拉丁字母。
-“空格”键,打印一个空格。
-“CapsLock”键,用于将字母键的状态从小写转换为大写或反过来。初始状态是小写的。
-“退格键”,删除屏幕上最后一个字母/空格。
如果Roze按下“退格键”,屏幕上没有任何东西可以删除,什么也不会发生。
考虑到Roze必须打印的文本和她在键盘上按下的键的顺序,检查Roze是否正确地打印了文本(包括每两个单词之间正好有一个空格)。
输入
第一行包含一个整数n (1 < n < 2000),这是Roze必须打印的文本中的单词数。
然后n个字符串表示Roze要打印的文本,它们之间用一个空格隔开。
每个字符串只包含大写和小写的拉丁字母,且所有字符串的总长度小于2000
下面一行包含一个整数m (1 < m < 2000),这是Roze按下的键的数量。
然后是m行,每行包含一个字符串,表示所按的键。
它保证最后按下的键是一个字母,而第一个键不是空格键。
输出
打印包含检查结果的一行。
如果Roze正确地打印了文本,请打印“正确”。否则,打印“不正确”。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,m,flag=1,ans=1;
string a;
string s;
string v;
scanf("%d",&n);
getchar();//别忘了!!!
getline(cin,a);
scanf("%d",&m);
getchar();//别忘了!!!
while(m--)
{
getline(cin,s);
if(s=="CapsLock")
{
flag++;
}
else if(s=="Space")
{
v+=" ";
}
else if(s=="Backspace")
{
if(v.size())//注意别忘了,否则一直erase会越界
v.erase(v.size()-1,1);
}
else
{
if(flag%2==0)
{
v+=(s[0]-32);//注意不是s
}
else
{
v+=s[0];
}
}
}
if(a==v)
printf("Correct");
else
printf("Incorrect");
return 0;
}
😊