在循环LinkedList中查找字符串中给定单词的起始索引

时间:2016-06-25 21:24:42

标签: java string linked-list

我试图在java中生成一个程序,它将字符串输入和第二个输入作为一个单词,我试图从给定的字符串中找到该单词的起始索引。如果单词出现不止一次,它应该给出所有起始索引。

输入字符串:

ped come wrapped to wrap

输入Word(需要找到它的起始索引):

包裹

欲望输出:

9 20

我已经制作了一个找到给定单词的起始索引的程序。但是,我正在努力添加一个更多的逻辑,如果你看到我的输入字符串' s(last_word + first_word)= wrapped(我正在寻找一个单词)所以我需要得到最后一个单词的起始索引输出也是如此。

这是我到目前为止所生成的内容。

public class Practice {

    public static void findWordIndex(String text, String word) {

        for (int i = text.length(); (i = text.lastIndexOf(word, i - 1)) != -1; ) {
            System.out.println(i);
        }
    }

    public static void main(String[] args){
        Practice p = new Practice();
        p.findWordIndex("ped come wrapped the wrap", "wrapped");
    }
}

2 个答案:

答案 0 :(得分:0)

到目前为止你有一个良好的开端。

这可以解决您的问题:

public static String findWordIndex(String text, String word) {
    int startIndex = -1;
    int endIndex = -1;

    for(int i = 0; i < text.length(); i++){ //Start looping through the text

        if(text.charAt(i) == word.charAt(0)){ //If the first letter matches
            startIndex = i;
            for(int j = 1; j < word.length(); j++){ //Check the rest of the word to see if remaining characters match

                if(word.charAt(j) != text.charAt(j+i)){ //If one of the characters suddenly doesn't match, reset the process
                    startIndex = -1;
                    break;
                } else if(j == word.length()-1){ //We're at the end of the word and all of the characters have matched so far
                    endIndex = i+j;
                    return "Start: " + startIndex + ", End: " + endIndex;
                }
            }
        }
    }

    return null; //if all else fails, return null
}

我希望这会有所帮助。如果没有,请告诉我!此外,当你这样做:

public static void main(String[] args){
    Practice p = new Practice();
    p.findWordIndex("ped come wrapped the wrap", "wrapped");
}

您不必创建当前正在使用的类的实例。您应该只能直接调用findWordIndex:

public static void main(String[] args){
    findWordIndex("ped come wrapped the wrap", "wrapped");
}

答案 1 :(得分:0)

以空格为代价,我找到了根据你的问题得到你的字符串索引的方法,我没有在这个解决方案中使用IndexOf(),我做的是我使用了两个{{ 1}}一个用于单词(省略空格),另一个用于每个字符串的长度,我使用迭代来获取这些字符串的索引,并检查两个单词Arraylist的组合是否被禁用在省略空格后equal我的输出是 [7,16] 。这是我的代码:

word