全WA,悬棺求调

B4039 [GESP202409 三级] 回文拼接

wky_wsy @ 2024-11-23 15:30:41

#include <iostream>
#include <string>
#include <algorithm>
#define int long long
using namespace std;
bool ishw(string s){
    int l=s.size();
    --l;
    int sb=l/2;
    for(int i=0;i<sb;i++){
        if(s[i]!=s[l-i]) return false;
    }
    return true;
}
signed main(){
    int n;
    string s;
    cin.tie(0);
    cin>>n;
    while(n--){
        cin>>s;
        int l=s.size();
        for(int i=2;i<l;i++){
            string s1=s.substr(0,i);
            string s2=s.substr(i-1);
            if(ishw(s1)&&ishw(s2)){
                printf("Yes");
                goto ls;
            }
        }
        printf("No");
        ls: putchar('\n');
    }
}

by CHEN08_94 @ 2024-11-23 15:59:47

1.你这个判断回文的函数写错了 2.你这个字符串截取的位置不对,人家要求两段拼接起来,所以不能重叠


#include <iostream>
#include <string>
#include <algorithm>
#define int long long
using namespace std;
bool ishw(string s){
    string x=' '+s;
    int l=s.length();
    int sb=0;
    if(l%2==0) sb=l/2;
    else sb=(l-1)/2;
    for(int i=1;i<=sb;i++)
    {
        if(x[i]!=x[l-i+1]) return false; 
    }
    return true;
}
signed main(){
    int n;
    string s;
    cin.tie(0);
    cin>>n;
    while(n--){
        cin>>s;
        int l=s.size();
        for(int i=2;i<l;i++){
            string s1=s.substr(0,i);
            string s2=s.substr(i,l);
            if(ishw(s1)&&ishw(s2)){
                printf("Yes");
                goto ls;
            }
        }
        printf("No");
        ls: putchar('\n');
    }
}
```@[wky_wsy](luogu://user/1323415)

|