Problem
1. この質問には、大文字で構成される文字列についての推論が含まれます。同じクラスに表示される 2 つの関連するメソッドを実装します (表示されていません)。最初のメソッドは単一の文字列パラメータを取り、その文字列のスクランブル バージョンを返します。 2 番目の方法は、文字列のリストを取得し、リスト内の各エントリをスクランブルしてリストを変更します。スクランブルできないエントリはリストから削除されます。
a) メソッド scrambleWord を作成します。このメソッドは、指定された単語を受け取り、次の規則に従ってその単語をスクランブルしたバージョンを含む文字列を返します。
- スクランブル プロセスは単語の最初の文字から始まり、左から右へと続きます。
- 2 つの連続した文字が「A」で構成されている場合その後に「A」以外の文字が続く場合、結果の文字列で 2 つの文字が入れ替わります。
- 隣接する 2 つの位置の文字が交換されると、それらの 2 つの位置のいずれも将来の交換に関与することはできません。
次の表に、単語とそのスクランブル バージョンの例をいくつか示します。
<本体>
言葉 |
scrambleWord(word) によって返される結果 |
「タン」 |
「TNA」 |
「アブラカダブラ」 |
「バーカバラ」 |
「WHOA」 |
「WHOA」 |
「ツチブタ」 |
「ARADVRAK」 |
「卵」 |
「卵」 |
「あ」 |
「あ」 |
「」 |
「」 |
表>
下記の scrambleWord メソッドを完成させてください。
/** 指定された単語をスクランブルします。
* @param word スクランブルする単語
* @スクランブルされた単語を返す (おそらく単語と等しい)
* 前提条件: 単語が空の文字列であるか、大文字のみを含んでいる
* 事後条件: 返された文字列は次のように単語から作成されました:
* - 単語は、最初の文字から始まり、左から右へとスクランブルされています
* - "A" で構成される 2 つの連続した文字「A」以外の文字が続きます。入れ替わった
* - 文字が最大 1 回交換されました
*/
public static String scrambleWord(String単語)
プレ>
b) メソッド scrambleOrRemove を記述します。このメソッドは、パラメーター wordList 内の各単語をスクランブルされたバージョンに置き換え、スクランブル後に変更されていない単語をすべて削除します。 wordList 内のエントリの相対的な順序は、scrambleOrRemove を呼び出す前と同じままです。
次の例は、scrambleOrRemove を呼び出した結果、wordList の内容がどのように変更されるかを示しています。
scrambleOrRemove の呼び出し前:
単語リスト
<本体>
0 |
1 |
2 |
3 |
4 |
「TAN」 |
「アブラカダブラ」 |
「WHOA」 |
"APPLE" |
「卵」 |
表>
scrambleOrRemove の呼び出し後:
単語リスト
<本体>
0 |
1 |
2 |
「TAN」 |
"バーカバラ" |
"PAPLE" |
表>