Re: [閒聊] 每日leetcode

看板Marginalman作者 (是oin的說)時間1年前 (2024/08/23 12:48), 編輯推噓2(202)
留言4則, 4人參與, 1年前最新討論串756/1548 (看更多)
題目: 給你字串 -1/2+1/2 3/6-1/3+2/5-10/2 要你算出結果 思路: 機掰 超麻煩 直接做一個class num 然後用operator處理加減 生成num就暴力的一個一個字放進去 姆咪 ```cpp class num{ public: int up; int down; num(){ up = 0; down = 1; } num operator+(const num &a){ num res; res.up = up * a.down + a.up * down; res.down = down * a.down; for(int i = 2 ; i <= 100 ; i ++) { while( res.up%i == 0 && res.down%i == 0 ) { res.up /= i; res.down /= i; } } return res; } }; class Solution { public: string fractionAddition(string exp) { int len = exp.size(); int i = 0 ; num k ; int kneg = 1; if (exp[i] == '-'){ kneg = -1; i++; } k.up = exp[i] - '0'; if (i + 1 < len && exp[i + 1] == '0') { k.up = 10; i++; } k.up *= kneg; if (i + 3 < len && exp[i + 2] == '1' && exp[i + 3] == '0') { k.down = 10; i += 4; } else { k.down = exp[i + 2] - '0'; i += 3; } while (i < len) { num now; int neg = 1; if (exp[i] == '-') { neg = -1; i++; } else if (exp[i] == '+') { i++; } now.up = exp[i] - '0'; if (i + 1 < len && exp[i + 1] == '0') { now.up = 10; i++; } now.up *= neg; if (i + 3 < len && exp[i + 2] == '1' && exp[i + 3] == '0') { now.down = 10; i += 4; } else { now.down = exp[i + 2] - '0'; i += 3; } k = k + now; } string ress; ress += to_string(k.up); ress += "/"; ress += to_string(k.down); return ress; } };``` -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.162.31.178 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1724388507.A.0A8.html

08/23 12:49, 1年前 , 1F
你有什麼用
08/23 12:49, 1F

08/23 12:52, 1年前 , 2F
我好討厭你
08/23 12:52, 2F

08/23 12:58, 1年前 , 3F
大師
08/23 12:58, 3F

08/23 13:34, 1年前 , 4F
大師
08/23 13:34, 4F
文章代碼(AID): #1co1IR2e (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1co1IR2e (Marginalman)