Integer to English Words 문제 풀이 보고서
13750 단어 자바 개발알고리즘 학습LeetCode 문제 풀이 보고서Java편.
Subject
출처:https://leetcode.com/problems/integer-to-english-words/
Convert a non-negative integer to its english words representation. Given input is guaranteed to be less than 231−1
for example
123 -> “One Hundred Twenty Three” 12345 -> “Twelve Thousand Three Hundred Forty Five” 1234567 -> “One Million Two Hundred Thirty Four Thousand Five Hundred Sixty Seven”
Explain
성형 숫자 를 영어 단어 로 바꾸다.영어 단 어 는 숫자 가 모두 세 분 한 조 임 을 나타 낸다.
Thousand - Million - Billion 。
사고방식 은 1-19,20,30,40,50,60,70,80,90,100,1000,1000000,100000000 에 대응 하 는 영어 단 어 를 미리 표시 하 는 것 이다.그리고 통합.
Solution
solution 1
큰 것 부터 작은 것 까지.
public String numberToWords(int num) {
if (num == 0) {
return "Zero";
} else {
return helper(num).substring(1);
}
}
public String helper(int num) {
String result = "";
if (num / 1000000000 > 0) {
result += helper(num / 1000000000) + getWord(0)
+ getWord(1000000000) + helper(num % 1000000000);
} else if (num / 1000000 > 0) {
result += helper(num / 1000000) + getWord(0) + getWord(1000000)
+ helper(num % 1000000);
} else if (num / 1000 > 0) {
result += helper(num / 1000) + getWord(0) + getWord(1000)
+ helper(num % 1000);
} else if (num / 100 > 0) {
result += getWord(0) + getWord(num / 100) + getWord(0)
+ getWord(100) + helper(num % 100);
} else if (num >= 20) {
result += getWord(0) + getWord((num / 10) * 10) + helper(num % 10);
} else if (num > 0) {
result += getWord(0) + getWord(num);
} else {
return "";
}
return result;
}
public String getWord(int num) {
switch (num) {
case 0:
return " ";
case 1:
return "One";
case 2:
return "Two";
case 3:
return "Three";
case 4:
return "Four";
case 5:
return "Five";
case 6:
return "Six";
case 7:
return "Seven";
case 8:
return "Eight";
case 9:
return "Nine";
case 10:
return "Ten";
case 11:
return "Eleven";
case 12:
return "Twelve";
case 13:
return "Thirteen";
case 14:
return "Fourteen";
case 15:
return "Fifteen";
case 16:
return "Sixteen";
case 17:
return "Seventeen";
case 18:
return "Eighteen";
case 19:
return "Nineteen";
case 20:
return "Twenty";
case 30:
return "Thirty";
case 40:
return "Forty";
case 50:
return "Fifty";
case 60:
return "Sixty";
case 70:
return "Seventy";
case 80:
return "Eighty";
case 90:
return "Ninety";
case 100:
return "Hundred";
case 1000:
return "Thousand";
case 1000000:
return "Million";
case 1000000000:
return "Billion";
default:
return " ";
}
}
상기 코드 Run Time 은 3ms 입 니 다.
solution 2
어 릴 때 부터 지금까지.
private String[] units = { "", "Thousand", "Million", "Billion" };
public String numberToWords2(int num) {
if (num == 0) {
return "Zero";
}
String result = "";
int i = 0;
while (num > 0) {
if (num % 1000 > 0) {
result = helper2(num % 1000) + units[i] + getWord(0) + result;
}
num /= 1000;
i++;
}
return result.trim();
}
/**
*
* @param num
* @return
*/
public String helper2(int num) {
if (num >= 100) {
return getWord(num / 100) + getWord(0) + getWord(100) + getWord(0)
+ helper2(num % 100);
} else if (num > 20) {
return getWord((num / 10) * 10) + getWord(0) + helper2(num % 10);
} else if (num > 0) {
return getWord(num) + getWord(0);
} else if (num == 0) {
return "";
}
return "";
}
상기 코드 런 타임 은 4ms 입 니 다.
bingo~~
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바 에서 흔히 볼 수 있 는 몇 가지 http 요청 사례위의 4 가지 방법 은 get 과 post 요청 을 보 낼 수 있 는 방법 입 니 다. 1 번: HttpURLConnection, 2 번: URLConnection, 3 번: HttpClient, 4 번 째: Soc...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.