- 字符串修改
思路
- @ 2025-3-22 21:17:08
长 短
s t
int i=0,j=0,n=s.size(),m=t.size();
while (i<n && j<m){ //把i和j同时做循环了
if(s[i] == '?'){
s[i] = t[j];
i++,j++;
}else if(s[i]==t[j]) i++,j++;
else i++;
}
if(j!=m) cout<<no;
else{
for(int i=0;i<n;i++) if(s[i]=='?') s[i] = 'a';
cout <<yes<<endl;
cout << s<<ednl;
}
for循环
两个字符串
一个有可能长的(有的字符是万能的)
一个短的(字符是固定的)
问你短的在长的里有没有出现
看短的是不是长的子串
01234567
adaaddaa 8
长字符串里面的字符都要当再做开头和短的去比
dad 3
p = 1;
for(int i=0;i<=s1.size-s2.size();i++){ //能拿到长的每一个字符
int x = i,flag = 1;//承接一下 不能改i
string s3 = s1;
for(int j=0;j<s2.size();j++){ //短的
if (s3[x]== s2[j] || s3[x]=='?'){
x++;
s3[x] = s2[j];
}else{
flag = 0; //失败了
s3 = s1; //如果改不对 重置
break;
}
}
if(flag == 1){ //输出yes + 修改过后的字符串
p = 0;
cout<<"yes"<<endl;
//把s3遍历一遍 把所有的? 改成随便一个字符
cout <<s3<<endl; //可能有? 没改完
break;
}
}
if(p==1){
NO ;
}
0 条评论
目前还没有评论...
信息
- ID
- 66
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 56
- 已通过
- 13
- 上传者