Re: [閒聊] 每日leetcode

看板Marginalman作者 (6B)時間1年前 (2024/08/08 05:16), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串663/1548 (看更多)
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++; } }; -- 露西亞: 誰可以提交第一次就AC就可以說這題簡單 https://i.imgur.com/mCCb5Qs.jpeg
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.205.121.194 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1723065383.A.58F.html
文章代碼(AID): #1ci-GdMF (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1ci-GdMF (Marginalman)