2016-04-04 19 views
1

İşte benim kodum,Sonuç olarak ortaya çıkan maksimum süreleri belirleyin ve başlangıç ​​dizinini döndürür

Bana bunu bitirmenin yolunu bulun. Bu soruyu kağıda yazdım, o zamanın kodu vardı. Aşağıdaki örnekte bu

public class HelloWorld { 

    public static void main(String []args){ 
     int result = getMax("haaddddddddccf"); 
     System.out.println(result); 
    } 

    public static int getMax(String input){ 
     int length = input.length(); 

     int count  = 0; 
     int max  = 0; 
     int tempCount = 0; 

     for(int i=0;i<length-1;i++) {    
      if(input.charAt(i) == input.charAt(i+1)) { 
       count ++ ; 
      } 
      tempCount = count; 
      count = 0; 

      if(max > tempCount) { 
       max = tempCount;     
       return i;     
      } 

      tempCount = 0; 
     } 
     return 0;   
    } 
} 
+0

'str.indexOf ()' birinci dizini döndürür. – Hackerdarshi

+0

evet! Teşekkürler .cheers :) –

cevap

0

3. ("d" başlangıç ​​noktası) dönmelidir nasıl böyle bir şey hakkında: tüm dize üzerinde

public class HelloWorld { 

    public static void main(String []args){ 
     int result = getMax("haaddddddddccf"); 
     System.out.println(result); 
    } 

    public static int getMax(String input){ 
     int length = input.length(); 

     int maxIndex = 0; 
     int max  = 0; 
     int count  = 1; 
     char current = input.charAt(0); 
     int index = 0; 

     for(int i=1; i<length-1; i++) { 
      if(input.charAt(i) == current) { 
       count ++ ; 
       if(count > max) { 
        max = count; 
        maxIndex = index; 
       } 
      } 
      else { 
       count = 1; 
       current = input.charAt(i); 
       index = i; 
      }     
     } 
     return maxIndex; 
    } 
} 

Bu gider ve karakterlerin ardışık olaylar sayarak. Sayım gözlenen maksimum değerin üzerine çıkarsa, ardışık karakter dizisinin başlangıç ​​indeksi ile karakter sayısı kaydedilir. Karakter değişirse, mevcut değerler sıfırlanır ve sayım başlar. Tüm listeyi geçtikten sonra, ardışık karakterlerin en uzun dizisinin indeksi maxIndex'dadır.

+0

Güzel. Cevabı kabul etmekten çekinmeyin =) – dvaergiller