結果
| 問題 |
No.345 最小チワワ問題
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2017-06-04 20:34:45 |
| 言語 | Java (openjdk 23) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 2,543 bytes |
| コンパイル時間 | 3,576 ms |
| コンパイル使用メモリ | 77,464 KB |
| 実行使用メモリ | 52,316 KB |
| 最終ジャッジ日時 | 2024-09-22 05:44:27 |
| 合計ジャッジ時間 | 5,787 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 15 WA * 14 |
ソースコード
package question3;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* No.345 最小チワワ問題
* Cさんによれば、ある文字列に 'c', 'w', 'w' がこの順で含まれるとき、
* その文字列を「チワワ列」であるといいます。
* Cさんは小さなチワワが好きなので、できるだけ長さの小さいチワワ列を見つけたいです。
* 文字列 SS が与えられるので、
*その連続した部分文字列のうちチワワ列となるものの最小の長さを求めてください。
*
*/
public class Question10_0604 {
static final int LENGTH_MIN = 1;
static final int LENGTH_MAX = 100;
public static void main(String[] args) {
InputStreamReader re = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(re);
try {
String inputStr = br.readLine();
int result = 0;
int c_num = 100;
int w1_num = 0;
int w2_num = 0;
//有効範囲か確認
if (LengthJudg(inputStr, LENGTH_MIN, LENGTH_MAX)){
char[] inputChar = inputStr.toCharArray();
//cを探す
for (int i = 0; i < inputChar.length; i++) {
if (inputChar[i] == 'c') {
c_num = i + 1;
break;
}
}
//wを探す
if (c_num != 100) {
for (int i = c_num ; i < inputChar.length; i++) {
if (inputChar[i] == 'w') {
w1_num = i + 1;
break;
}
}
}
//wを探す(2回目)
if (w1_num != 0) {
for (int i = w1_num ; i < inputChar.length; i++) {
if (inputChar[i] == 'w') {
w2_num = i + 1;
break;
}
}
}
//計算
if (w2_num != 0) {
result = w2_num - c_num + 1;
//チワワ列なし
} else {
result= -1;
}
System.out.println(result);
} else {
System.out.println("長さが有効範囲外です");
}
} catch (IOException e) {
System.out.println("エラーが発生しました。");
} finally {
try {
re.close();
br.close();
} catch (IOException e) {
System.out.println("InputStreamReader、BufferedReaderクローズ中にエラーが発生しました");
}
}
}
/**
* 有効値判定
* @param str 判定する文字列
* @param max 最大値
* @param min 最小値
* @return 範囲内ならtrue,範囲外ならfalseを返す
*/
private static boolean LengthJudg(String str, int min, int max) {
Boolean result = false;
if (min <= str.length() && str.length() <= max) {
result = true;
}
return result;
}
}