Leetcode Java Equal Rational Numbers
업데이트:
문제
코드
class Solution {
public boolean isRationalEqual(String s, String t) {
return this.parse(s) == this.parse(t);
}
private double parse(String str) {
int index = str.indexOf('(');
if (index > 0) {
StringBuilder base = new StringBuilder(str.substring(0, index));
String num = str.substring(index + 1, str.length() - 1);
for (int i = 1; i < 18; i++) {
base.append(num);
}
return Double.valueOf(base.toString());
} else {
return Double.valueOf(str);
}
}
}
결과
설명
- 아래의 규칙을 만족하는 s와 t를 이용하여 동일한지 검증하는 문제이다.
- s의 괄호 안 문자열을 앞의 문자열에 연속해서 생성한다.
- 문자열을 실수형으로 변환하기위한 parse(String str) 메서드를 정의한다.
- index는 str의 문자열을 자르기 위한 위치 변수로, 내 괄호 시작 문자의 위치를 찾아 넣어준다.
- index가 0보다 큰 경우 아래를 수행한다.
- base에 str의 처음부터 index까지 문자열을 잘라 새 StringBuilder에 넣어준다.
- num에 str의 $index + 1$번째 위치에서 마지막 이전 문자열까지 반복 숫자열을 잘라 넣어준 후 1부터 18 미만까지 i를 증가시키며 base에 num을 이어준다.
- 반복이 완료되면 완성된 문자열인 base를 실수형으로 변환하여 반환한다.
- 위의 경우가 아니라면 정수이므로, str을 실수형으로 넣어준다.
- 2번에서 정의한 parse(String str) 메서드를 이용하여 s와 t를 실수형으로 변환한 값이 동일한지 여부를 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기