結果

問題 No.588 空白と回文
ユーザー eitaho
提出日時 2017-11-03 22:37:12
言語 C#
(csc 2.8.2.62916)
結果
AC  
実行時間 29 ms
コード長 2,617 Byte
コンパイル時間 682 ms
使用メモリ 8,852 KB
最終ジャッジ日時 2019-02-01 17:38:59

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
0.txt AC 27 ms
8,832 KB
1.txt AC 27 ms
8,836 KB
2.txt AC 28 ms
8,840 KB
3.txt AC 27 ms
8,844 KB
4.txt AC 27 ms
8,840 KB
5.txt AC 27 ms
8,836 KB
6.txt AC 28 ms
8,824 KB
7.txt AC 27 ms
8,828 KB
8.txt AC 27 ms
8,836 KB
9.txt AC 27 ms
8,836 KB
10.txt AC 27 ms
8,844 KB
11.txt AC 29 ms
8,844 KB
12.txt AC 28 ms
8,832 KB
13.txt AC 27 ms
8,840 KB
14.txt AC 26 ms
8,844 KB
15.txt AC 27 ms
8,828 KB
16.txt AC 27 ms
8,828 KB
17.txt AC 29 ms
8,852 KB
18.txt AC 28 ms
8,840 KB
19.txt AC 27 ms
8,840 KB
20.txt AC 29 ms
8,840 KB
21.txt AC 29 ms
8,836 KB
22.txt AC 29 ms
8,844 KB
23.txt AC 29 ms
8,848 KB
24.txt AC 27 ms
8,840 KB
テストケース一括ダウンロード
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 2.8.2.62916 (2ad4aabc)
Copyright (C) Microsoft Corporation. All rights reserved.

ソースコード

diff #
using System;
using System.IO;
using System.Linq;
using System.Text;
using System.Collections.Generic;
using System.Diagnostics;
using Enu = System.Linq.Enumerable;

public class Program
{
    public void Solve()
    {
        var S = Reader.String();
        int N = S.Length;
        int ans = 0;

        for (int center = 0; center < N; center++)
            for (int centerLen = 1; centerLen <= 2 && center + centerLen <= N; centerLen++)
            {
                int len = S[center] == S[center + centerLen - 1] ? centerLen : 0;
                for (int L = center - 1, R = center + centerLen; L >= 0 && R < N; L--, R++)
                    if (S[L] == S[R]) len += 2;
                ans = Math.Max(ans, len);
            }

        Console.WriteLine(ans);
    }
}


class Entry { static void Main() { new Program().Solve(); } }
class Reader
{
    static TextReader reader = Console.In;
    static readonly char[] separator = { ' ' };
    static readonly StringSplitOptions op = StringSplitOptions.RemoveEmptyEntries;
    static string[] A = new string[0];
    static int i;
    static void Init() { Dispose(); A = new string[0]; }
    public static void Set(TextReader r) { Init(); reader = r; }
    public static void Set(string file) { Init(); reader = new StreamReader(file); }
    public static bool HasNext() { return CheckNext(); }
    public static string String() { return Next(); }
    public static int Int() { return int.Parse(Next()); }
    public static long Long() { return long.Parse(Next()); }
    public static double Double() { return double.Parse(Next()); }
    public static int[] IntLine() { return Array.ConvertAll(Split(Line()), int.Parse); }
    public static int[] IntArray(int N) { return Range(N, Int); }
    public static int[][] IntTable(int H) { return Range(H, IntLine); }
    public static string[] StringArray(int N) { return Range(N, Next); }
    public static string[][] StringTable(int N) { return Range(N, () => Split(Line())); }
    public static string Line() { return reader.ReadLine().Trim(); }
    public static T[] Range<T>(int N, Func<T> f) { var r = new T[N]; for (int i = 0; i < N; r[i++] = f()) ; return r; }
    public static void Dispose() { reader.Dispose(); }
    static string[] Split(string s) { return s.Split(separator, op); }
    static string Next() { CheckNext(); return A[i++]; }
    static bool CheckNext()
    {
        if (i < A.Length) return true;
        string line = reader.ReadLine();
        if (line == null) return false;
        if (line == "") return CheckNext();
        A = Split(line);
        i = 0;
        return true;
    }
}
0