寒假训练1
T1
洛谷同题
根据题意模拟即可,处理好字符串边界。
Code:
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
int n;
string s;
int main(){
cin>>n>>s;
if(n%2==0) cout<<"No";
else{
bool f=1;
for(int i=0;i<=(n+1)/2-2;i++){
if(s[i]!='1') f=0;
}
if(s[(n+1)/2-1]!='/') f=0;
for(int i=(n+1)/2;i<=n-1;i++){
if(s[i]!='2') f=0;
}
if(f) cout<<"Yes";
else cout<<"No";
}
return 0;
}
T2
洛谷同题
一样根据题意模拟即可,处理好字符串边界。
Code:
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
string s;
bool f=1;
int t[26],len;
int main(){
cin>>s;
len=s.length();
s=" "+s;
if(len%2==1) f=0;
for(int i=1;i<=len;i++){
t[s[i]-'a']++;
if(i<=len/2){
if(s[2*i-1]!=s[2*i]) f=0;
}
}
for(int i=0;i<26;i++){
if(t[i]!=0 && t[i]!=2) f=0;
}
if(f) cout<<"Yes";
else cout<<"No";
return 0;
}
T3
洛谷同题
以/为起始点,开始向外扩展,扩展到不能扩展时记录下字符串长度,再对比。复杂度为
Code:
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
int n,ans;
string s;
int main(){
cin>>n>>s;
for(int i=0;i<n;i++){
if(s[i]=='/'){
int l=i,r=i;
while(l>=0 && r<n){
bool f=1;
if(l-1>=0 && r+1<n && s[l-1]=='1' && s[r+1]=='2'){
l--;
r++;
f=0;
}
if(f) break;
}
ans=max(ans,r-l+1);
}
}
cout<<ans;
return 0;
}