c++ - 在LintCode上碰到了一题largest-number
天蓬老师
天蓬老师 2017-04-17 13:41:22
0
2
713
天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回覆(2)
小葫芦

可以把這段程式碼分成兩部分看。正常情況下,程式碼把下面的for迴圈執行完就結束了:

        for (int i = 0; i < s_num.size(); ++i) {
            tmp_res += s_num[i];
        }

例如,依cmp排序[1, 20, 23, 4, 8],得到[8, 4, 23, 20, 1]。用一個for迴圈把它們連接成「8423201」就是最終答案。
但是,總是有特殊情況出現。如果陣列裡面全是0呢?例如,[0, 0, 0, 0]。這時就要對tmp_res進行處理:遍歷tmp_res,有三種情況:

  1. 如果目前字元不是'0',就把目前字元儲存到res;

  2. 如果目前字符是'0',但是tmp_res裡面存在不是'0'的字符,同樣把當前字符存儲到res;

  3. 如果目前字元是'0',而且目前字元之前的所有字元都是'0',就不做處理。
    遍歷結束後,如果發現flag為false,表示數組裡全是0,所以往res裡保存一個'0'即可。

刘奇

這部分的作用是.. 如果所有位元都是0, 例如輸入是[0,0,0,0], 讓這個函數回傳0而不是0000

flag表示tmp_res[i]左邊是否有非0的位元

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!