题目:oier WA70分

题目描述

有很多个oier排成一排,比如” oier oier oier oier Oier oIer”

现在让你判断这一排oier是否满足以下条件:

1:首尾都没有空格;

2:相邻两个单词只有一个空格;

3:每一个单词都是“oier”,都为小写。

输入格式

输入一行字符串表示要判断的oier。

输出格式

对于这个字符串,如果同时满足三个条件,输出“YES”,否则输出“NO”。

样例

Input 1

Oier oier oier

Output 1

NO

Input 2

oier oier oier

Output 2

YES

Input 3

  oier oier   

Output 3

NO

数据范围

1<=字符串长度<=100

我的代码:

#include<bits/stdc++.h>
using namespace std;
void ceshi(void)
{
	string s;
	getline(cin,s);
	if(s[0]==' ' || s[s.size()-1]==' ')
	{
		cout<<"NO"<<endl;
		return;
	}
	if(s.size()/4<1)
	{
		cout<<"NO"<<endl;
		return;
	}
	int num=0;
	for(int i=0;i<s.size();i++)
	{
		num++;
		if(s[i]>='A' && s[i]<='Z')
		{
			cout<<"NO"<<endl;
			return;
		}
		if(i%5==0 && s[i]!='o')
		{
			cout<<"NO"<<endl;
			return;
		}
		if(i%5==1 && s[i]!='i')
		{
			cout<<"NO"<<endl;
			return;
		}
		if(i%5==2 && s[i]!='e')
		{
			cout<<"NO"<<endl;
			return;
		}
		if(i%5==3 && s[i]!='r')
		{
			cout<<"NO"<<endl;
			return;
		}
		if(i%5==4 && s[i]!=' ')
		{
			cout<<"NO"<<endl;
			return;
		}
	}
	if((num-4)%5!=0)
	{
		cout<<"NO"<<endl;
		return;
	}
	cout<<"YES"<<endl;
	return;
}
int main()
{
	int t;
	cin>>t;
	getchar();
	for(int i=1;i<=t;i++)
	{
		ceshi();
	}
	return 0;
}

多谢指教! :pray:

2 个赞
#include <bits/stdc++.h>
using namespace std;
string s;
void input(){
	getline(cin, s);
}
bool check(){
	int len = s.size();
	if (len == 0) return true;
	if (len < 4) return false; 
	if ((len - 4) % 5 != 0) return false;
	int ptr = 1;
	char ans[5] = {' ', 'o', 'i', 'e', 'r'}; 
	for (int i = 0; i < len; ++i){
		if (s[i] != ans[ptr]) return false; 
		++ptr;
		ptr %= 5;
	}
	return true;
}
void work(){
	input();
	if (check()) cout << "YES";
	else cout << "NO";
}
int main(){
	work();
	return 0;
}
2 个赞