关于c++:BB-统计回文子串基础上机试题

44次阅读

共计 822 个字符,预计需要花费 3 分钟才能阅读完成。

当初给你一个字符串 S,请你计算 S 中有多少间断子串是回文串。
输出
输出蕴含多组测试数据。每组输出是一个非空字符串,长度不超过 5000。
输入
对于每组输出,输入回文子串的个数。
样例输出 Copy
aba
aa
样例输入 Copy
4
3

代码示例(本人写的,只能过平台,不完满)

//#include<iostream>
//#include<string>
//#include<string.h>
//using namespace std;
//
//int main(){
//    string s;
//    while(getline(cin,s)){//        int len = s.length();
//        int i,left = 0,right = 0;
//        int cnt = len;
//        for(i = 0; i < len; i++){
//            left = i - 1;// 隔了一个字符对称的两个字符进行比拟 
//            right = i + 1;
//            while(left >= 0 && right < len){//                if(s[left] == s[right]){// 与相隔一个字符对称的进行比拟(XYX 型,比拟两个 XX),看是否相等,相等则回文子串加 1 
//                    ++ cnt;
//                    -- left;
//                    ++ right;// 若合乎则向两边扩散,看更长的子串(隔着 3 个 Y,AXYXA)的两边两个 A 是否相等,直到越界,相等就加 1 
//                }else{
//                    break;
//                }
//            }
//            left = i - 1;// 左右相邻的两个字符进行比拟 
//            right = i;
//            while(left >= 0 && right < len){//                if(s[left] == s[right]){// 与相邻字符进行比拟(XX 型,比拟两个 XX),看是否相等,相等则回文子串加 1  
//                    ++ cnt;
//                    -- left;
//                    ++ right;// 同上,若合乎向两边扩散(AXXA),看两个边 A 是否相等,直到遍历残缺个字符串 
//                }else{
//                    break;
//                }
//            }
//        }
//        cout << cnt << endl;
//    }
//    return 0;
//}

正文完
 0