gpt4 book ai didi

java - notepad++查找功能如何工作?

转载 作者:太空宇宙 更新时间:2023-11-04 14:31:53 24 4
gpt4 key购买 nike

对于给定的包含随机数的较大字符串,对于各个数字,我如何找到每个数字的计数?

我的方法:

  1. 从第一个数字开始查找该数字的计数并将该数字并行存储到另一个数组/字符串中。
  2. 对于第二个数字,首先在并行数组中搜索是否存在,如果不存在,则在主字符串中查找计数。
  3. 继续。

有没有其他更快、更有效的方法来做到这一点,因为我使用的是记事本/ Notepad++ 查找函数,与我的方法相比,它的工作速度相当快。

代码:

List<Integer> list=new ArrayList<Integer>();
List<Integer> subList=new ArrayList<Integer>();

for(int i=0;i<list.size();i++){
int count=1;
int number=list.get(i);

if(!subList.contains(number)){
for(int j=i+1;j<list.size();j++){
if(list.get(j)==number){
count++;
}
}
System.out.println(number+" "+count);
subList.add(number);
}
}

最佳答案

现在我们已经展示了您所拥有的内容,我们可以更好地分析情况。

您似乎不确定如何将计数与每个单独的元素关联起来。您正在增加计数,但它与任何项目都没有关联,这可能是最大的混淆因素。

这就是 HashMap 之类的东西发挥作用的地方。

在本例中,您希望将找到的号码 i 与其个人计数 c 相关联。对于我们找到的第一个,计数将从 1 开始,然后当我们找到更多时递增。借助 HashMap 的思想,我们可以采用任何您能想到的整数并将其用作键,然后将其计数 c 关联为您从键中获取的值。

    HashMap<Integer, Integer> findMap = new HashMap<Integer, Integer>();

for (int i = 0; i < list.size(); i++) {
int number = list.get(i);

if (findMap.get(number) == null) {
// we didn't find it in the map, so we put it in with a counter of 1
findMap.put(number, 1);
}
else {
// we already have inserted it, we should add 1 to counter
findMap.put(number, findMap.get(number) + 1);
}
}

//to get everything out of the HashMap
for (Integer i : findMap.keySet()) {
System.out.println(i + ": " + findMap.get(i));
}

如果您有足够的经验,请确定代码插入部分的 Big O,作为 OP 的任务。

关于java - notepad++查找功能如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26046514/

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