문제
문자와 숫자가 섞여있는 문자열이 주어지면 그 중 숫자만 추출하여 그 순서대로 자연수를 만듭니다.
만약 “tge0a1h205er”
에서 숫자만 추출하면 0, 1, 2, 0, 5
이고 이것을 자연수를 만들면 1205이 됩니다.
추출하여 만들어지는 자연수는 100,000,000을 넘지 않습니다.
입력
첫 줄에 숫자가 썩인 문자열이 주어집니다. 문자열의 길이는 100을 넘지 않습니다.
출력
첫 줄에 자연수를 출력합니다.
예시 입력
g0en2T0s8eSoft
예시 출력
208
출처
내 풀이
private static int extractNumber1(String input) {
int result = 0;
for(char ch : input.toCharArray()) {
if(Character.isDigit(ch)) {
result *= 10;
result += ch - '0'; // 숫자(char)를 int로
}
}
return result;
}
문자열의 문자를 순환하면서 숫자일 때 자릿수를 올리고 그 숫자를 더한다
private static int extractNumber2(String input) {
StringBuilder sb = new StringBuilder();
input.chars()
.filter(Character::isDigit)
.forEach(sb::appendCodePoint);
return Integer.parseInt(sb.toString());
}
Stream.filter
를 사용하여 숫자만 필터링한후 Integer.parseInt
로 파싱한다
다른 풀이
/* 강의 풀이 */
public int solution(String s){
//int answer=0;
String answer="";
for(char x : s.toCharArray()){
//if(x>=48 && x<=57) answer=answer*10+(x-48);
/*if(Character.isDigit(x)){
answer=answer*10+ Character.getNumericValue(x);
}*/
if(Character.isDigit(x)) answer+=x;
}
return Integer.parseInt(answer);
}
기억할 점
Integer.parseInt
vs Integer.valueOf
parseInt
는 int
를 반환, valueOf는 Integer
를 반환한다
숫자(char)를 int로 바꾸기
- ch - '0'
- Character.getNumericValue(ch);
'Java > Coding-Test' 카테고리의 다른 글
[Java] 1-11 문자열 압축 (0) | 2022.01.16 |
---|---|
[Java] 1-10 가장 짧은 문자거리 (0) | 2022.01.16 |
[Java] 1-8 유효한 팰린드롬 (0) | 2022.01.15 |
[Java] 1-7 회문 문자열 (0) | 2022.01.14 |
[Java] 1-6 중복문자제거 (0) | 2022.01.13 |
댓글