题目描述
传说中,有一位占卜师掌握着一种奇特的咒语。如果一个咒语可以被重复施展一次,便能召唤出古老的力量。
现在,给你一个咒语字符串 S,你需要判断是否存在一个非空的子咒语 T,使得整个咒语可以通过连续施展两次 T 完成。
如果存在这样的子咒语,请回答
Yes
,否则回答No
。
输入说明
第一行为整数 N,表示咒语长度。
第二行一个字符串 S,表示占卜师的咒语。
输出
如果咒语符合条件,输出
Yes
,否则输出No
。
解题思路
根据样例不难发现 这道题其实是在判断这个字符串是否能分解成两个相同的子字符串
那我们首先需要判断一下这个字符串的长度,奇数长度是肯定没办法分解成两部分的
然后使用字符串自带函数 substr 分别截取前半部分和后半部分 然后做一次比较就可以了
参考程序
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
string s,s1="",s2="";
cin>>s;
if(n%2==0){
s1=s.substr(0,s.size()/2);
s2=s.substr(s.size()/2);
if(s1==s2){
cout<<"Yes";
}else{
cout<<"No";
}
}else{
cout<<"No";
}
return 0;
}
标签:24,12,s2,s1,博宜,substr,字符串,咒语,占卜师 From: https://blog.csdn.net/weixin_44295710/article/details/144401153