我有一个不同短语的数组列表,例如“蛋白质”、“蛋白激酶”、“功能性”、“功能性蛋白质”、“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] 之间,[8, 22] 最大,因为 22-8 = 14 > 15-8 = 7,所以必须选择 [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);
}
}
}