結果
| 問題 | No.588 空白と回文 |
| コンテスト | |
| ユーザー |
Tsukasa_Type
|
| 提出日時 | 2018-02-14 00:14:02 |
| 言語 | Java (openjdk 25.0.2) |
| 結果 |
AC
|
| 実行時間 | 117 ms / 2,000 ms |
| コード長 | 1,218 bytes |
| 記録 | |
| コンパイル時間 | 1,681 ms |
| コンパイル使用メモリ | 82,800 KB |
| 実行使用メモリ | 51,512 KB |
| 最終ジャッジ日時 | 2026-05-25 06:50:23 |
| 合計ジャッジ時間 | 6,678 ms |
|
ジャッジサーバーID (参考情報) |
judge1_1 / judge3_1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 25 |
ソースコード
import java.util.*;
public class Main {
static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
String s = sc.next();
//まずは、端以外の文字を中心にして調べる
int ans1 = 0;
for (int i=1; i<s.length()-1; i++) {
StringBuilder sb = new StringBuilder(s);
StringBuilder L = new StringBuilder(sb.delete(i,sb.length()));
sb = new StringBuilder(s);
StringBuilder R = new StringBuilder(sb.delete(0,i+1));
L.reverse();
int max1 = 0;
for (int j=0; j<Math.min(L.length(),R.length()); j++) {
if (L.charAt(j)==R.charAt(j)) {max1++;}
}
ans1 = Math.max(ans1,max1);
}
ans1 = ans1*2+1;
//次、基準が文字の真ん中の場合
int ans2 = 0;
for (int i=1; i<s.length(); i++) {
StringBuilder sb = new StringBuilder(s);
StringBuilder L = new StringBuilder(sb.delete(i,sb.length()));
sb = new StringBuilder(s);
StringBuilder R = new StringBuilder(sb.delete(0,i));
L.reverse();
int max2 = 0;
for (int j=0; j<Math.min(L.length(),R.length()); j++) {
if (L.charAt(j)==R.charAt(j)) {max2++;}
}
ans2 = Math.max(ans2,max2);
}
ans2 = ans2*2;
System.out.println(Math.max(ans1,ans2));
}
}
Tsukasa_Type