Leetcode - 소수 까지 점수
10861 단어 알고리즘
제목 링크: 점수 부터 소수 까지
생각:
인터넷 에서 이 문제 에 대한 해답 은 사고방식 이 대동소이 하 다여 기 는 하나의 맵 을 통 해 여 수 를 기록 해 야 합 니 다. 순환 소수 의 특징 은 나머지 가 같은 결과 가 나 오 는 것 입 니 다. 저 장 된 여 수 를 만 났 을 때 순환 이 생 겼 다 는 것 을 설명 합 니 다. 그 위치 에 '(' 만 추가 하면 됩 니 다. 결과 에 ')' 5 를 추가 하 는 것 이 가장 좋 은 것 이 아 닙 니 다. 하 나 는 순환 에 소 수 를 추가 할 수 있 는 부분 을 바 꿀 수 있 습 니 다.기록 순환 을 통 해 위 치 를 만 들 고 괄호 를 추가 합 니 다. 둘째, 질서 있 는 맵 을 무질서 한 HashMap 으로 대체 합 니 다.
public static String fractionToDecimal(int numerator, int denominator) {
//
if(numerator==0) {
return "0";
}
// -1 ,0
int flag = (numerator^denominator)>>31;
//
long num = Math.abs((long)numerator),den = Math.abs((long)denominator);
long Int = num/den;
long remainder = num%den;
StringBuffer res = new StringBuffer();
res.append(flag==-1?"-"+Int:Int);
if(remainder==0) {
//
return res.toString();
}
// ,
res.append(".");
// ,
// Map
//
Map<Long,Long> map = new LinkedHashMap<Long,Long>();
long div = 0;
while(remainder!=0) {
remainder *= 10;
//
div = remainder/den;
map.put(remainder/10,div); //
remainder %= den;
if(map.containsKey(remainder)) {
// ,
// ,
int fla = 0;
for(Long key:map.keySet()) {
if(fla==0&&key!=remainder) {
res.append(map.get(key));
}
if(key==remainder) {
fla = 1;res.append("(");
}
if(fla==1) {
res.append(map.get(key));
}
}
res.append(")");
return res.toString();
}
}
for(Long key:map.keySet()) {
res.append(map.get(key));
}
return res.toString();
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Codility Lesson3】FrogJmpA small frog wants to get to the other side of the road. The frog is currently located at position X and wants to get to...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.