2017-05-21 36 views
0
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好心寫爲如何找到距離最長的B/W的字符串

+0

你能分享一下你到目前爲止所嘗試過的嗎? –

+0

我們不是在這裏做你的作業 – ControlAltDel

+0

SO是爲了問問題而不是做你的工作! – poisonedYouth

回答

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 
    } 
} 
1

代碼可以使用indexOf讓你的字符的第一指標,lastIndexOf拿到最後一個索引,例如:

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 lastIndexOf開始,爲您獲得2和24,而不是3和27

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 
相關問題