题解 SP7757 【MFLAR10 - Flowers Flourish from France】
原来SPOJ都一个测试点啊?
好吧,这题大家while啊?我用的是递归!
首先因为大小写都一样,所以我写了个全换成小写的函数:
char tounder(char x)
{
if(x >= 'A' && x <= 'Z')
{
return x - 'A' + 'a';
}
else
{
return x;
}
}
然后和一个递归读入函数:
void input()
{
getline(cin, s);
if(s == "*")
{
return ;
}
bool flag = false;
s[0] = tounder(s[0]);
for(int i = 1; i <= s.length() - 1; i++)
{
if(s[i] != ' ')
{
s[i] = tounder(s[i]);
}
if(s[i] == ' ')
{
s[i + 1] = tounder(s[i + 1]);
if(s[i + 1] != s[0])
{
flag = true;
break;
}
}
}
if(!flag)
{
cout << "Y\n";
}
else
{
cout << "N\n";
}
input();
}
其实相当于如果为空,那么下个字符肯定是首字符,用这个字符和s[0]对比就AC了!
完整代码:
#include <iostream>
#include <cstring>
using namespace std;
string s;
char tounder(char x)
{
if(x >= 'A' && x <= 'Z')
{
return x - 'A' + 'a';
}
else
{
return x;
}
}
void input()
{
getline(cin, s);
if(s == "*")
{
return ;
}
bool flag = false;
s[0] = tounder(s[0]);
for(int i = 1; i <= s.length() - 1; i++)
{
if(s[i] != ' ')
{
s[i] = tounder(s[i]);
}
if(s[i] == ' ')
{
s[i + 1] = tounder(s[i + 1]);
if(s[i + 1] != s[0])
{
flag = true;
break;
}
}
}
if(!flag)
{
cout << "Y\n";
}
else
{
cout << "N\n";
}
input();
}
int main()
{
input();
return 0;
}
分类:
题解
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现