1 条题解
-
0
先给AC代码
#include<bits/stdc++.h> using namespace std; int main(){ freopen("03.in","r",stdin); freopen("03.out","w",stdout); string s; cin>>s; int l=s.length(); for(int i=0;i<l;i++){ if(s[i]=='<'){//左箭头 int h=1;//箭头长度 bool flag=1;//是否为双向箭头 while(i+h<l&&s[i+h]!='>'){ if(s[i+h]!='='){//箭头中间 flag=0; break; } h++; } if(flag&&i+h<l&&s[i+h]=='>'&&h>=2){ cout<<"Yes"; return 0; } } } cout<<"No"; return 0; }
if(s[i]=='<')
题目中说字符串D为双向箭头时,会以'<'开头,所以在遍历字符串时以遇到'<'为判断条件
判断时,int h=1
用h代表当前箭头的长度(其实是'<'到'>'的距离)i+h<l
作为循环条件以防出界s[i+h]!='>'
表示如果找到'>'便退出循环进行下一步判断
注意!每次循环结束后将h++
最后判断未出界、箭头之间有'='、结尾为'>'、长度符合要求,最后输出并结束程序
全部遍历完如果没有出现双向箭头就输出'No'
信息
- ID
- 1058
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- 递交数
- 65
- 已通过
- 5
- 上传者