gpt4 book ai didi

java - 递归查找字符串的索引

转载 作者:行者123 更新时间:2023-11-30 10:49:45 25 4
gpt4 key购买 nike

我正在尝试编写一个代码,该代码返回一个数组,其元素是我在字符串中查找的单词(出现次数)的索引:前任)d输入:

String sent = "Hi is Hi is Hi is";
String find = "Hi";

ArrayList<Integer> index = indexFinder(sent,find);
For(int i=0;i<index.size(),i++)
System.out.println(index.get(i));

输出:

0
6
12

如果 Java 有像 python 一样的字符串切片函数就好了..但是因为它没有..我尝试使用 substring() 方法。

import java.util.ArrayList;

public class recursionEx {
ArrayList<Integer> index = new ArrayList<Integer>();
ArrayList<Integer> indexFinder(String sent, String find){
int pos =0;
int subPos =0;
if(sent.contains(find)==false){
return index;
}
else if(sent.contains(find)){
pos = sent.indexOf(find);
index.add(pos);
subPos = pos+find.length();
return indexFinder(sent.substring(subPos),find);
}
return index;
}

public static void main(String[] args) {
String sent = "Hi is Hi is Hi is";
String find = "Hi";
recursionEx r = new recursionEx();
ArrayList<Integer> g = r.indexFinder(sent, find);
for(int i=0;i<g.size();i++){
System.out.println(g.get(i));
}

}

}

输出是

0
4
4

事后看来,我得到了每次迭代发送的原始字符串的子字符串,因此索引数组中的元素是发送的字符串字符串查找的索引> 分别是 0,4,4。

如何解决此问题以获得所需的输出?感谢您的帮助!

最佳答案

您不应使用子字符串作为参数,而应仅在字符串中搜索的开始。这是一种可行的方法,它并不完美,请尝试使其变得更好:

import java.util.ArrayList;

public class recursionEx {
ArrayList<Integer> index = new ArrayList<Integer>();
String string;
recursionEx(String string){this.string = string;}

ArrayList<Integer> indexFinder(int position, String find){
int pos =0;
int subPos =0;
if(string.substring(position).contains(find)==false){
return index;
}
else if(string.substring(position).contains(find)){
pos = string.substring(position).indexOf(find) + position;
index.add(pos);
subPos = pos+find.length();
return indexFinder(subPos,find);
}
return index;
}

public static void main(String[] args) {
String sent = "Hi is Hi is Hi is";
String find = "Hi";
recursionEx r = new recursionEx(sent);
ArrayList<Integer> g = r.indexFinder(0, find);
for (Integer pos : g)
System.out.println(pos);

}

}

关于java - 递归查找字符串的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35312108/

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