关于openjudge 1.7节 34题回文字符串的解法

pineapple20 2025-02-04 13:20:34

'''

#include <cstdio>

#include <string>

#include <cctype>

#include <iostream>

using namespace std;

int main()

{

    string s;

    

    cin >> s;

    int n = s.size();    // "China"

    

    bool is_palindrome(string s);

    

    for (int len= 2len<=s.size(); len++)

       for (int start = 0start<=n - lenstart++)

            if ( is_palindrome(s.substr(startlen)) )

               cout << s.substr(startlen<< endl;

       

    return 0;

}

bool is_palindrome(string s)

{

    int n = s.size();    // "abcba"

    int i=0j=n-1;

    

    while (i<j)

       if (s[i]==s[j])

       {

            i++;

            j--;

       }

       else

          return false;     

             

    return true;    

'''

共 1 条回复

zhuyuhao
//OpenJudge - 1.7 - 34 
#include <bits/stdc++.h>
using namespace std;
string oks[500];
bool cheak(string s){
	string hh = s;
	reverse(s.begin(),s.end());
	return hh == s;
}
bool cmp(string x,string y){
	return x.size() < y.size();
}
int main(){
	string s;
	cin>>s; 
	int n = s.size(),m = -1;
	if (n == 1){
		return 0;
	}
	for (int ok = 2;ok <= n;ok++){
		for (int i = 0;i <= n - ok;i++){
			string ook = s.substr(i,ok);
			if (cheak(ook)){
				cout<<ook<<endl;
			}
		}
	}
	return 0;
}