Re: [闲聊] 每日leetcode

楼主: sixB (6B)   2024-08-08 05:16:20
273. Integer to English Words
好无聊== if else练习题
很久没写switch caseㄌ 忘关关
string bi("Billion"), mi("Million"), th("Thousand"), hu("Hundred");
string twy("Twenty"), thy("Thirty"), foy("Forty"), fiy("Fifty"),\
siy("Sixty"), sey("Seventy"), eiy("Eighty"), niy("Ninety");
// 10 to 19
string ten("Ten"), ele("Eleven"), twv("Twelve"), \
tht("Thirteen"), fot("Fourteen"), fit("Fifteen"), \
sit("Sixteen"), svt("Seventeen"), eit("Eighteen"), nit("Nineteen");
string one("One"), two("Two"), three("Three"), four("Four"),\
five("Five"), six("Six"), seven("Seven"), eight("Eight"), nine("Nine");
class Solution {
public:
string numberToWords(int num) {
string res, cur;
int ion = 0, cnt = 0;
if(num == 0){
return "Zero";
}
while(num != 0){
if(cnt == 3){
cnt = 0;
concat(cur, res, ion);
}
if(cnt == 0){
int tenz = num % 100;
// 10 to 19
if(tenz >= 10 and tenz <= 19){
switch ( tenz ){
case 10:
cur = ten;
break;
case 11:
cur = ele;
break;
case 12:
cur = twv;
break;
case 13:
cur = tht;
break;
case 14:
cur = fot;
break;
case 15:
cur = fit;
break;
case 16:
cur = sit;
break;
case 17:
cur = svt;
break;
case 18:
cur = eit;
break;
case 19:
cur = nit;
break;
default:
break;
}
num /= 100;
cnt += 2;
}
else regular(num, cur, cnt);
}
regular(num, cur, cnt);
}
concat(cur, res, ion);
return res;
}
void concat(string& cur, string& res, int& ion){
if(cur == ""){
ion++;
return;
}
switch(ion){
case 1:
//thousand
cur = cur + " " + th;
break;
case 2:
//million
cur = cur + " " + mi;
break;
case 3:
//billion
cur = cur + " " + bi;
break;
default:
break;
}
if(res != ""){
res = cur + " " + res;
}
else res = cur;
cur = "";
ion++;
}
void regular(int& num, string& cur, int& cnt){
int reg = num % 10;
num /= 10;
if(reg == 0) {
cnt++; return;
}
string st;
if(cnt == 1){
switch (reg){
case 2:
st = twy;
break;
case 3:
st = thy;
break;
case 4:
st = foy;
break;
case 5:
st = fiy;
break;
case 6:
st = siy;
break;
case 7:
st = sey;
break;
case 8:
st = eiy;
break;
case 9:
st = niy;
break;
default:
break;
}
}
else {
switch (reg){
case 1:
st = one;
break;
case 2:
st = two;
break;
case 3:
st = three;
break;
case 4:
st = four;
break;
case 5:
st = five;
break;
case 6:
st = six;
break;
case 7:
st = seven;
break;
case 8:
st = eight;
break;
case 9:
st = nine;
break;
default:
break;
}
if(cnt == 2){
st = st + " " + hu;
}
}
if(cur == ""){
cur = st;
}
else{
cur = st + " " + cur;
}
cnt++;
}
};

Links booklink

Contact Us: admin [ a t ] ucptt.com