2017-12-09 8 views
0

文字列内の特定の文字の出現回数をカウントして、連続する出現を1と見なす方法を解明しようとしています。文字列内の文字の出現をカウントする(1つとして連続する)

public static void main (String Args[]){ 
Scanner in =new Scanner(System.in); 
String s =in.next(); 
//HashSet hd =new HashSet(); 
int flag=0; 
int count=1; 
char a=s.charAt(0); 
for(int i=1;i<s.length();i++) 
{ 
    //hd.add(s.charAt(i)); 
    if(a==s.charAt(i)) 
    { 
     continue; 
    } 
    else 
    { 
     a=s.charAt(i); 
     count++; 
    } 
} 
System.out.println(count); 
     } 
+5

お試しはどこですか?あなたのコード –

+0

[文字列中の文字の出現を数える簡単な方法]の可能な複製(https://stackoverflow.com/questions/6100712/simple-way-to-count-character-occurrences-in-a-string) – vinS

+0

@ LalitVerma私は、ユニークな出現を1つとしてカウントし、連続する出現も1つカウントし、最後にそれらを追加したい。 –

答えて

1

として3としてPの発生およびA、手紙のみ、または範囲をASCIIに設定すると、Mapを避けることができます。

public static void main(String... args) { 
    int[] letters = calcLetterGroups("PPPPPAAPAP"); 
    printExistedLetterGroups(letters); 
} 

public static int[] calcLetterGroups(String str) { 
    int[] arr = new int['Z' - 'A' + 1]; 
    char prv = '\0'; 

    for (char ch : str.toUpperCase().toCharArray()) { 
     if (ch >= 'A' && ch <= 'Z' && prv != ch) { 
      arr[ch - 'A']++; 
      prv = ch; 
     } 
    } 

    return arr; 
} 

public static void printExistedLetterGroups(int... letters) { 
    for (char ch = 'A'; ch <= 'Z'; ch++) 
     if (letters[ch - 'A'] > 0) 
      System.out.printf("%s: %d\n", String.valueOf(ch), letters[ch - 'A']); 
} 
0

のような文字列で "PPPPAPAAPP" 私は、これはあなたを助けると思う2.

+0

私は1文字の合計数を意味します –

+0

もう一つの答えを見てください、彼女はすでにそれをしています –

0

あなたの場合:これは正しく総示し

import java.util.*; 

     public class MyClass { 
     public static void main(String args[]) { 
      Map<String,Integer> countMap = new HashMap<String,Integer>(); 
      String s = "PPPPPAAPAP"; 
      String prev = null; 
      for(int i=0;i<s.length();i++){ 
       String c = String.valueOf(s.charAt(i)); 
       if(prev==null){ 
       countMap.put(c,new Integer(1)); 
       }else{ 
       if(!c.equals(prev)){ 

       if(countMap.containsKey(c)){ 

         Integer count = countMap.get(c); 
         count = count +1; 
         countMap.put(c,count); 

       } 
       else{ 

        countMap.put(c,new Integer(1)); 

       } 
      } 
     } 
     prev = c; 
     } 
     for(String keys :countMap.keySet()){ 
     System.out.println("Keys:"+keys+"\t"+countMap.get(keys)); 
     } 
    } 
    } 
関連する問題