「タンパク質」、「タンパク質キナーゼ」、「機能的」、「機能的タンパク質」、「sox5」、「il-6」などのさまざまなフレーズの配列リストがあります。今、入力として文を与えると、「機能的タンパク質キナーゼおよびil-6およびsox5」、「{機能性タンパク質}キナーゼおよび{il-6}および{sox5}」として出力を提供する必要があります。文中のすべての単語をフレーズと比較する必要があります。
私が行ったコードは、さまざまなフレーズの配列リストと比較されるさまざまな文字列の開始インデックスと終了インデックスを返します。最大で衝突のないインデックスのみを除外する必要があります。たとえば、入力の場合:
[0, 7][8, 22][8, 15] [36, 43] [23, 43] [20, 30]
必要な出力:
[0, 7] [8, 22] [23, 43]
ケース:
- [8, 22] と [8, 15] の間では、22-8 = 14 > 15-8 = 7 であるため [8, 22] が最も大きく、[8,22] を選択する必要があります。
- [36, 43]、[23, 43] と [20, 30] の間で、36 は [23, 43] の範囲にあり、30 も [23, 43] の範囲にあります。 23, 43] が最も大きく、選択する必要があります。
必要な出力を得るにはどうすればよいですか? (比較基準)
私はやった、
ArrayList<ArrayList<Integer>> ListOfList = new ArrayList<ArrayList<Integer>>();
for(int a = 0; a<ListOfList.size();a++)
{
if(a == ListOfList.size()-1) break;
for(int b = a+1; b<ListOfList.size();b++)
{
if((ListOfList.get(a).get(0) == ListOfList.get(b).get(0)) && (ListOfList.get(a).get(1) < ListOfList.get(b).get(1)))
{
startOffset = ListOfList.get(b).get(0);
endOffset = ListOfList.get(b).get(1);
}
else
{
startOffset = ListOfList.get(a).get(0);
endOffset = ListOfList.get(a).get(1);
}
}
}