본문 바로가기
Algorithm

문자열 입력받아 포함된 알파벳 갯수 확인

by BeGeek 2015. 4. 11.

String을 입력받아 사용된 알파벳수 출력

Tip.

정수(int) 숫자를 문자(char)로 바꾸려면 타입캐스팅을 하면됨. ex>  (char)숫자

알파벳 대문자 A~Z : (char)65~90  (26개)

알파벳 소문자 a~z : (char)97~122 (26개)

위와 같이 알파벳 대문자와 소문자 사이에는 6개(char)92~96의 특수문자가 있음.

91:[   92:\   93:]    94:^    95:_    96:`

따라서 for문을 돌려서 알파벳 각 문자를 비교하기위해 대문자26자 + 소문자 26자 = 52자 기준으로 돌리되

중간에 특수문자 6개를 띄어넘어 비교하게 끔 아래와 같은 로직을 이용하면 됨

for(int i=0; i < 52; i++){

   if(i < 26){

       (char)(i + 65)  //A~Z

   }else{

       (char)(i + 71) //a~z  

71을 더한이유는 소문자a가 숫자로는 97 부터이므로 대문자0~25까지 처리후 다음 i 숫자인 26을 더해서 97이 되는 71을 더하면 됨!!!

주의! (char)i + 71과 (char)(i + 71) 은 다름!!!

ex> System.out.println((char)(0+65)); 는 A

      System.out.println((char)0+65); 는 66

 

   }

}

WordCount.java

 
public class WordCount {

 /**
  * String을 입력받아 사용된 알파벳수 출력
  *
  */
 
 
 public WordCount(){
  
 }
 
 public void counting(String s){
  
  int slength = s.length();      //입력받는 문자열 길이
  char []alphabet = new char[52]; //비교할 알파벳을 담을 배열
  int []cnt = new int[52];
  
  for(int k=0; k < 52; k++){
   
   if(k < 26){ //대문자 (char)65~91
    alphabet[k] = (char)(k + 65);
   }else{ //소문자 (char)97~123  //97부터니깐 26 + 71 = 97부터 임
    alphabet[k] = (char)(k + 71);
   }
  }
  
  for(int i = 0; i < 52; i++){
   for(int j=0; j < slength; j++){
    
    if(s.charAt(j) == alphabet[i] ){
     
     ++cnt[i];
    }
    
   }
  }
  
  //출력
  for(int m=0; m < 52; m++){
   System.out.println("alphabet["+m+"]"+alphabet[m]+":"+ cnt[m]);
  }
   
  
 }
 
 public static void main(String[] args) {

  String str = "helloworld";
  WordCount wc = new WordCount();
  
  wc.counting(str);
  
  
  
  
 }

}

결과출력

alphabet[0]A:0
alphabet[1]B:0
alphabet[2]C:0
alphabet[3]D:0
alphabet[4]E:0
alphabet[5]F:0
alphabet[6]G:0
alphabet[7]H:0
alphabet[8]I:0
alphabet[9]J:0
alphabet[10]K:0
alphabet[11]L:0
alphabet[12]M:0
alphabet[13]N:0
alphabet[14]O:0
alphabet[15]P:0
alphabet[16]Q:0
alphabet[17]R:0
alphabet[18]S:0
alphabet[19]T:0
alphabet[20]U:0
alphabet[21]V:0
alphabet[22]W:0
alphabet[23]X:0
alphabet[24]Y:0
alphabet[25]Z:0
alphabet[26]a:0
alphabet[27]b:0
alphabet[28]c:0
alphabet[29]d:1
alphabet[30]e:1
alphabet[31]f:0
alphabet[32]g:0
alphabet[33]h:1
alphabet[34]i:0
alphabet[35]j:0
alphabet[36]k:0
alphabet[37]l:3
alphabet[38]m:0
alphabet[39]n:0
alphabet[40]o:2
alphabet[41]p:0
alphabet[42]q:0
alphabet[43]r:1
alphabet[44]s:0
alphabet[45]t:0
alphabet[46]u:0
alphabet[47]v:0
alphabet[48]w:1
alphabet[49]x:0
alphabet[50]y:0
alphabet[51]z:0

 

댓글