专栏文章
题解:P12005 【MX-X10-T1】[LSOT-4] 如何用中间忘了写一篇排版整齐的题解?
P12005题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @minriku2
- 此快照首次捕获于
- 2025/12/02 07:10 3 个月前
- 此快照最后确认于
- 2025/12/02 07:10 3 个月前
可以观察出规则中的
英文、数字或公式都是捆绑在一起的。而且,连续的多个空格跟单个空格是等价的。所以,可以先对这个字符串进行处理,方便后续判断:
- 把连续的空格只保留一个。
- 把英文、数字和公式都改成一个一样的字符
- 还可根据习惯替换掉原来字符
接着相邻的两两判断:是否有出现中文和英文、数字或公式之间没有空格。如果有,输出
No 然后终止程序。再相邻的三三判断:是否有出现中文标点和英文、数字或公式之间有空格。如果有,输出
No 然后终止程序。如果都没出现那些情况,输出
Yes。代码
CPP#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
cin>>s;
string a="";//处理之后的串
int n=s.size();
for(int i=0;i<n;i++){
if(i==0||(!(s[i]=='_'&&s[i-1]=='_'))){
if(s[i]=='_'){
a+=' ';
}
if(s[i]=='a'||s[i]=='$'||s[i]=='l'){
a+='0';
}
if(s[i]=='@'){
a+='1';
}
if(s[i]==','){
a+='2';
}
}
}//处理字符串,方便判断
n=a.size();
for(int i=1;i<n;i++){//两两判断
if(a[i]=='1'&&a[i-1]=='0'){
cout<<"No";
return 0;
}
if(a[i-1]=='1'&&a[i]=='0'){
cout<<"No";
return 0;
}
}
for(int i=1;i+1<n;i++){//三三判断
if(a[i]==' '&&a[i-1]=='0'&&a[i+1]=='2'){
cout<<"No";
return 0;
}
if(a[i]==' '&&a[i-1]=='2'&&a[i+1]=='0'){
cout<<"No";
return 0;
}
}
cout<<"Yes";
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...