Re: [閒聊] 每日leetcode

看板Marginalman作者 (神楽めあ的錢包)時間6月前 (2025/06/06 22:48), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1443/1548 (看更多)
2434. Using a Robot to Print the Lexicographically Smallest String 題目 : 給你兩個字串s、t,t是一個空的字串 請遵從以下規則使s、t都變成空字串 (1) 移除s的第一個char,並將這個char加到t的最後面 (2) 移除t的最後一個char,並將這個char寫到紙上 請回傳寫在紙上按照字母序排列最小的字串 思路 : 如果i後面還有char比s[i]還小,那就只能把s[i]丟到t而不能把s[i]寫到紙上 反之如果i後面沒有char比t最後面的chat還小,那就把t最後的char寫到紙上 用一個array紀錄排在i之後最小的char 開始遍歷s,直到處理完s的最後一個char 再來把t裡面剩下的所有char寫到紙上 就可以得到答案了 C++ class Solution { public: string robotWithString(string s) { int n = s.size(); vector<char> minCharAfter(n); string t, ans; minCharAfter[n - 1] = s[n - 1]; for (int i = n - 2; i > -1; i--) { if (s[i] > minCharAfter[i + 1]) { minCharAfter[i] = minCharAfter[i + 1]; } else { minCharAfter[i] = s[i]; } } for (int i = 0; (i < n || t.size() > 0);) { if (t.size() > 0 && (i == n || t.back() <= minCharAfter[i])) { char c = t.back(); t.pop_back(); ans.push_back(c); } else { t.push_back(s[i]); i++; } } return ans; } }; -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 203.121.235.241 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1749221326.A.53A.html
文章代碼(AID): #1eGl_EKw (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1eGl_EKw (Marginalman)