如何在String中查找最长距离b / w char

时间:2017-05-21 09:08:20

标签: java arrays sorting logic

public class LongestAlphabetDistance {

    public int longDistance(String str, String a) {
        str = "this is my greatest achivement in the world";
        a = "i";
        int count =0;
        // code logic for longest differance
        return count;
    }
}

我想得到"这是我在世界上最伟大的成就"首先是距离b / w a = i,最后我喜欢t=1,h=2,i=3,s=4,空格不应该算上i=5,s=6,m=7,y=8,g=9,就像上一个i"" i=27所以首先i=3最后i=27所以最长距离b/w 24请为此编写代码

3 个答案:

答案 0 :(得分:1)

您可以使用indexOf获取char的第一个索引,使用lastIndexOf获取最后一个索引,例如:

opar <- par() # to reset later
par(xpd=TRUE)
plot(iris.rpart)
text(iris.rpart, use.n = T)
par <- opar # restore old setting

注意这两种方法String str = "this is my greatest achivement in the world"; String a = "i"; int indexFirst = str.replace(" ", "").indexOf(a);//this return 2 int indexLast = str.replace(" ", "").lastIndexOf(a);//this return 26 int dist = indexLast - indexFirst; //this return 24 indexOf从0开始,因为你得到2和24而不是3和27

答案 1 :(得分:1)

public class LongestAlphabetDistance {

    public int longDistance(String str, String a) {
        str = "this is my greatest achivement in the world";
        a = "i";
        str = str.replaceAll("\\s", "");
        char[] chArray = str.toCharArray();
        ArrayList<Integer> inArray = new ArrayList<>();

        for(int i =0;i<chArray.length;i++) {
            if(chArray[i] == a.charAt(0) ) {
                inArray.add(i+1);
            }
        }

        return inArray.get(inArray.size()-1)-inArray.get(0); // 24 
    }
}

答案 2 :(得分:0)

拼写正确,距离为25:

public static void main(String[] args) {

        String str = "this is my greatest achievement in the world".replaceAll(" ", "");
        String a = "i";
        int firstI = str.indexOf(a);
        int lastI = str.lastIndexOf(a);

        System.out.printf("%s%n%s%d%n%s%d%n%s%d", str, "First i: ", firstI, "Last i: ", lastI, "Distance: ", (lastI - firstI));

    }

<强>输出:

thisismygreatestachievementintheworld
First i: 2
Last i: 27
Distance: 25