gpt4 book ai didi

java-删除字符串列表中的子字符串

转载 作者:行者123 更新时间:2023-11-30 02:52:05 27 4
gpt4 key购买 nike

考虑字符串列表的情况示例 : list=['apple','bat','cow,'dog','applebat','cowbat','dogbark','help']

java 代码必须检查字符串的任何元素是否是另一个元素的子集,如果是则必须删除较大的字符串元素。

因此在这种情况下,字符串“applebat”、“cowbat”、“dogbark”将被删除。

我采取的方法是获取两个列表并按以下方式迭代它们,

ArrayList<String> list1 = new ArrayList<String>(strings);
ArrayList<String> list2 = new ArrayList<String>(strings);
for(int i = 0; i<list1.size();i++)
{
String curr1 = list1.get(i);

for(int j = 0;j<list2.size();j++)
{
String curr2 = list2.get(j);

if(curr2.contains(curr1)&&!curr2.equals(curr1))
{
list2.remove(j);
j--;
}
}
}

重要我有大小为 200K 到 400K 元素的列表。我想找到一种提高性能的方法。我什至尝试过哈希集,但它们没有太大帮助。我面临着程序所用时间的问题。

任何人都可以建议对我的代码进行任何改进或 java 中的任何其他方法来提高性能吗?

最佳答案

import java.util.ArrayList;
import java.util.*;
// our main class becomes a file but the main method is still found
public class HelloWorld
{
public static void main(String[] args)
{
String[] strings = {"apple","bat","cow","dog","applebat","cowbat","dogbark","help"};
ArrayList<String> list1 = new ArrayList<String>(Arrays.asList(strings));
ArrayList<String> list2 = new ArrayList<String>(Arrays.asList(strings));
ArrayList<String> result = new ArrayList<String>(Arrays.asList(strings));
for(int i = 0; i<8;i++)
{

String curr1 = list1.get(i);
System.out.println(curr1);
int flag = 0;
for(int j = i+1;j<8;j++)
{
String curr2 = list2.get(j);

if((curr2.contains(curr1)&&!curr2.equals(curr1)))
{

result.remove(curr2);
}
}

}
System.out.println(result);

}
}

关于java-删除字符串列表中的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38320472/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com