結果
| 問題 |
No.52 よくある文字列の問題
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2014-11-26 21:00:09 |
| 言語 | Java (openjdk 23) |
| 結果 |
AC
|
| 実行時間 | 137 ms / 5,000 ms |
| コード長 | 1,270 bytes |
| コンパイル時間 | 3,975 ms |
| コンパイル使用メモリ | 78,512 KB |
| 実行使用メモリ | 54,296 KB |
| 最終ジャッジ日時 | 2024-09-22 05:18:40 |
| 合計ジャッジ時間 | 5,942 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 11 |
ソースコード
import java.util.HashMap;
import java.util.Scanner;
public class Main52 {
public static void main(String[] args) {
Main52 p = new Main52();
}
HashMap<String, String> map;
public Main52() {
map = new HashMap<>();
Scanner sc = new Scanner(System.in);
String s = sc.next();
solve(s);
}
public void solve(String s) {
StringBuilder srcsb = new StringBuilder(s);
StringBuilder cursb= new StringBuilder();
rec(srcsb, cursb);
System.out.println(map.keySet().size());
}
private void rec(StringBuilder srcsb, StringBuilder cursb){
if(srcsb.length()==0){
map.put(cursb.toString(), cursb.toString());
return;
}
// 前からとる
char c = srcsb.charAt(0);
srcsb.deleteCharAt(0);
// cursb.insert(0, c);
// rec(srcsb, cursb);
// cursb.deleteCharAt(0);
cursb.append(c);
rec(srcsb, cursb);
cursb.deleteCharAt(cursb.length()-1);
srcsb.insert(0, c);
// 後ろからとる
c = srcsb.charAt(srcsb.length()-1);
srcsb.deleteCharAt(srcsb.length()-1);
// cursb.insert(0, c);
// rec(srcsb, cursb);
// cursb.deleteCharAt(0);
cursb.append(c);
rec(srcsb, cursb);
cursb.deleteCharAt(cursb.length()-1);
srcsb.append(c);
}
}