結果
| 問題 |
No.52 よくある文字列の問題
|
| コンテスト | |
| ユーザー |
nak3
|
| 提出日時 | 2017-11-25 18:34:27 |
| 言語 | Rust (1.83.0 + proconio) |
| 結果 |
AC
|
| 実行時間 | 1 ms / 5,000 ms |
| コード長 | 1,305 bytes |
| コンパイル時間 | 21,254 ms |
| コンパイル使用メモリ | 401,068 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-09-22 05:33:11 |
| 合計ジャッジ時間 | 20,508 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 11 |
コンパイルメッセージ
warning: variable does not need to be mutable
--> src/main.rs:19:31
|
19 | fn dfs(a: String, b: &String, mut hs: &mut HashSet<String>) {
| ----^^
| |
| help: remove this `mut`
|
= note: `#[warn(unused_mut)]` on by default
warning: constant `MOD` is never used
--> src/main.rs:4:7
|
4 | const MOD: i32 = 1000000007;
| ^^^
|
= note: `#[warn(dead_code)]` on by default
ソースコード
use std::io::*;
use std::str::*;
const MOD: i32 = 1000000007;
fn read<T: FromStr>() -> Option<T> {
let stdin = stdin();
let s = stdin
.bytes()
.map(|c| c.unwrap() as char)
.take_while(|c| !c.is_whitespace())
.collect::<String>();
s.parse::<T>().ok()
}
use std::collections::HashSet;
fn dfs(a: String, b: &String, mut hs: &mut HashSet<String>) {
// println!("a:{} b:{}", a, b);
if a.len() == 1 {
let s = b.to_string() + &a;
// println!("inserting .. {}", s);
hs.insert(s);
return;
}
let front = b.to_string() + &a[0..1].to_string();
let back = b.to_string() + &a[a.len() - 1..a.len()].to_string();
// println!("front : {}", front);
// println!("back : {}", back);
dfs(a[1..(a.len())].to_string(), &front, hs);
dfs(a[0..(a.len() - 1)].to_string(), &back, hs);
}
fn main() {
let mut hs: HashSet<String> = HashSet::new();
let s: String = read().unwrap();
if s.len() == 1 {
println!("1");
return;
}
if s.len() == 2 {
if s.chars().nth(0) == s.chars().nth(1) {
println!("1");
return;
}
println!("2");
return;
}
dfs(s, &"".to_string(), &mut hs);
println!("{}", hs.len());
}
nak3