1 条题解

  • 0
    @ 2025-3-22 9:39:52

    先给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
    上传者