⬆︎
×

[PAT-A] 1040 Longest Symmetric String

Hyplus目录

Java

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String s = reader.readLine();

        int res = 0;
        for (int i = 0; i < s.length(); ++i) {
            int l = i - 1, r = i + 1;
            while (l >= 0 && r < s.length() && s.charAt(l) == s.charAt(r)) {
                l--;
                r++;
            }
            res = Math.max(res, r - l - 1);

            l = i;
            r = i + 1;
            while (l >= 0 && r < s.length() && s.charAt(l) == s.charAt(r)) {
                l--;
                r++;
            }
            res = Math.max(res, r - l - 1);
        }

        System.out.println(res);
    }
}

C++

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

int main() {
    string s;
    getline(cin, s);

    int res = 0;
    for (int i = 0; i < s.size(); ++i) {
        int l = i - 1, r = i + 1;    // 奇数长度
        while (l >= 0 && r < s.size() && s[l] == s[r]) l--, r++;
        res = max(res, r - l + 1 - 2);

        l = i, r = i + 1;
        while (l >= 0 && r < s.size() && s[l] == s[r]) l--, r++;
        res = max(res, r - l + 1 - 2);
    }

    cout << res << endl;

    return 0;
}

发表评论