문자열 바꾸기

박진은·2023년 7월 29일
0

코테

목록 보기
38/44
import java.util.*;
class Solution {
    static Map<String,String> sn = new HashMap<>();
    static String[] ss = {"zero","one","two","three","four","five","six","seven","eight","nine"};
   
    
    public int solution(String s) {
        
        StringBuilder sb = new StringBuilder();
        for(int i = 0; i< ss.length; i++){
            sn.put(ss[i],Integer.toString((i)));
        }
        String number = "0123456789";
       
        
        for(int i =0; i< s.length(); i++){
            String c = Sting.valueOf(s.charAt(i));
            if(number.contains(c)){
                sb.append(c);
            }else{
                String a = "";
                int start = i;
                int end = i;
                while(sn.get(a)==null){
                    end++;
                    a = s.substring(start,end);
                }
                sb.append(sn.get(a));
                i = end-1;
            }
        }
        return Integer.parseInt(sb.toString());
    }
}

먼저 바보 같은 내 풀이 이다. 이 풀이를 보면 바보같이 문자열을 하나하나 바꾸고 있다 또한 while 문을 사용해서 숫자를 교환했다. 하지만 새로운 풀이를 보면

import java.util.*;
class Solution {
   static String[] ss = {"zero","one","two","three","four","five","six","seven","eight","nine"};
  
   
   public int solution(String s) {
       for(int i = 0; i < ss.length; i++){
          s = s.replaceAll(ss[i], Integer.toString(i));
       }
       
       return Integer.parseInt(s);
   }
}

이런 식으로 아주 쉽게 코딩이 가능하다.
String replace 를 까먹지 말아야겠다.

그리고 진법 변환에 필요한 아주 좋은 Integer class 의 api 가 있어서 설명하려한다.

메서드
Integer.parseInt(String s,int redix). - radix 진법으로 숫자를 표현하는 문자열 s를 정수로 변환한다.
2진법 문자열 1111,2 -> 15

Integer.toString(int v, int radix) - 정수 v 를 radix 진법의 문자열로 변환
15 ,2 -> 1111

Long.parseLong(String s, int radix) - radix 진법으로 숫자를 표현하는 문자열 s 를 정수로 변환한다.

Long.toString(long v, int radis) - 정수 v를 radix 진법의 문자열로 변환

profile
코딩

0개의 댓글