私は学校でこの以下の問題を与えられました。私は自分の理解に従って解決しました。解決策は以下のとおりです。誰かが同じことに対するより良い解決策を提供するのを手伝ってくれませんか。
質問:
2 つの大文字と小文字を区別しない並べ替えリストのフィルター処理されたマージを作成するソフトウェア アプリケーションを作成します。最初の入力リストはソース リストとして指定され、もう一方はプレフィックス リストとして指定されます。アプリケーションは、次のアルゴリズムを使用して、ソース リストとプレフィックス リストからのアイテムを含むマージされたリストを生成します。
次のいずれかが true の場合にのみ、項目 X がマージされたリストに含まれます。
a) X はソース リストからのものであり、X の大文字と小文字を区別しない文字列プレフィックスであるプレフィックス リストに項目 Y があります。
b) X は Prefixes リストからのものであり、ソース リストに、X が大文字と小文字を区別しない文字列プレフィックスである項目がありません。
完成したマージされたリストは、元の 2 つのリストの項目と同じ並べ替え順序になっている必要があります。
私の解決策:
public ArrayList<String> merge(List<String> srcList, List<String> preList) {
// If Prefixes list is empty then there cannot be a new merge list
if (preList.isEmpty()) {
return null;
}
int i = 0, j = 0;
int sourcesListSize = srcList.size();
int prefixesListSize = preList.size();
ArrayList<String> mergeList = new ArrayList<String>();
// Loop through Sources list until end of the list is reached
//ASSUMPTION: Both SourceList and PrefixList are already sorted.
while (i < sourcesListSize && j<prefixesListSize) {
mergeList.add(preList.get(j).concat(srcList.get(i)));
i++;
j++;
}
// If Prefixes list still have items, then add it to mergeList
while (j < prefixesListSize) {
mergeList.add(preList.get(j));
j++;
}
return mergeList;
}
入力:
- ソースリスト:
{"pple","ow","enver",pic,"ull"}
- PrefixList:
{"a","c","d","e","f"}
MergeList={"apple",cow","denver","epic","full"}
私の理解は正しいですか?他に最善の解決策はありますか?