最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go語言LeetCode題解937重新排列日志文件

 更新時(shí)間:2022年12月28日 12:01:52   作者:劉09k11  
這篇文章主要為大家介紹了Go語言LeetCode題解937重新排列日志文件,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

一 題目描述

937. 重新排列日志文件 - 力扣(LeetCode) (leetcode-cn.com)

給你一個日志數(shù)組 logs。每條日志都是以空格分隔的字串,其第一個字為字母與數(shù)字混合的 標(biāo)識符 。

有兩種不同類型的日志:

  • 字母日志:除標(biāo)識符之外,所有字均由小寫字母組成
  • 數(shù)字日志:除標(biāo)識符之外,所有字均由數(shù)字組成

請按下述規(guī)則將日志重新排序:

  • 所有 字母日志 都排在 數(shù)字日志 之前。
  • 字母日志 在內(nèi)容不同時(shí),忽略標(biāo)識符后,按內(nèi)容字母順序排序;在內(nèi)容相同時(shí),按標(biāo)識符排序。
  • 數(shù)字日志 應(yīng)該保留原來的相對順序。

返回日志的最終順序。

示例 1:

輸入:logs = ["dig1 8 1 5 1","let1 art can","dig2 3 6","let2 own kit dig","let3 art zero"]
輸出:["let1 art can","let3 art zero","let2 own kit dig","dig1 8 1 5 1","dig2 3 6"]
解釋:
字母日志的內(nèi)容都不同,所以順序?yàn)?"art can", "art zero", "own kit dig" 。
數(shù)字日志保留原來的相對順序 "dig1 8 1 5 1", "dig2 3 6" 。

示例 2:

輸入:logs = ["a1 9 2 3 1","g1 act car","zo4 4 7","ab1 off key dog","a8 act zoo"]
輸出:["g1 act car","a8 act zoo","ab1 off key dog","a1 9 2 3 1","zo4 4 7"]

提示:

1 <= logs.length <= 100

3 <= logs[i].length <= 100

logs[i] 中,字與字之間都用 單個 空格分隔

題目數(shù)據(jù)保證 logs[i] 都有一個標(biāo)識符,并且在標(biāo)識符之后至少存在一個字

二 分析

日志除去開頭的標(biāo)簽可以分成兩種子串:數(shù)字和字母,

首先分類,判斷不包含標(biāo)簽的子串分別push進(jìn)vector;

數(shù)字的vector不需要排序。

排序字母數(shù)組,重載sort(),sort需要用戶定義字符串比較規(guī)則:

cmp比較器先比較 log(除去標(biāo)簽)的子串,子串不相等就返回短的子串;

子串相等時(shí)比較標(biāo)識符,返回標(biāo)識符字典序小的;

最后將排序好的字母和不用排序的數(shù)字兩個數(shù)字添加進(jìn)res中。

三 答案

class Solution {    
public:    
    static bool cmp(string& str1, string& str2){
        int idx1=str1.find(' '), idx2=str2.find(' ');
        auto substr1=str1.substr(idx1+1), substr2=str2.substr(idx2+1);//標(biāo)識符后的子串
        if(substr1 != substr2)return  substr1<substr2;//子串進(jìn)行字典序排序
        return str1<str2;//子串相同,排序標(biāo)識符
    }
    vector<string> reorderLogFiles(vector<string>& logs) {     
        vector<string> nums, alphas, res;
         //日志分成兩類字母和數(shù)字分別存放在alphas 和 nums中,res為最后的結(jié)果。    
        for (auto &iter : logs) {    
            int index = iter.find_first_of(' '); //分割tag 和 log 的pos
            int idx_log = index + 1;  //log的pos  
            if (idx_log < iter.size() && iter[idx_log] <= '9' && iter[idx_log] >= 0) {    
                nums.push_back(iter);    
            }    
            else if (idx_log < iter.size()){    
                alphas.push_back(iter);    
            }    
        }    
        sort(alphas.begin(), alphas.end(), cmp);     
        for (auto &iter : alphas) {       
            res.push_back(iter);        
        }     
        for (auto &iter : nums) {    
            res.push_back(iter);    
        }   
    return res;    
    }    
};

以上就是Go語言LeetCode題解937重新排列日志文件的詳細(xì)內(nèi)容,更多關(guān)于Go語言重新排列日志文件的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Golang?統(tǒng)計(jì)字符串中數(shù)字字母數(shù)量的實(shí)現(xiàn)方法

    Golang?統(tǒng)計(jì)字符串中數(shù)字字母數(shù)量的實(shí)現(xiàn)方法

    這篇文章主要介紹了Golang?統(tǒng)計(jì)字符串中數(shù)字字母數(shù)量,本文給出了兩種從字符串獲取數(shù)字與字母數(shù)量的方法,分別是ASCII 碼值和正則表達(dá)式,需要的朋友可以參考下
    2022-06-06
  • GoLang RabbitMQ實(shí)現(xiàn)六種工作模式示例

    GoLang RabbitMQ實(shí)現(xiàn)六種工作模式示例

    這篇文章主要介紹了GoLang RabbitMQ實(shí)現(xiàn)六種工作模式,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • go語言實(shí)現(xiàn)全排列的示例代碼

    go語言實(shí)現(xiàn)全排列的示例代碼

    本文主要介紹了go語言實(shí)現(xiàn)全排列的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 解決Golang中ResponseWriter的一個坑

    解決Golang中ResponseWriter的一個坑

    這篇文章主要介紹了解決Golang中ResponseWriter的一個坑,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Golang中設(shè)置全局變量并在其他文件中使用

    Golang中設(shè)置全局變量并在其他文件中使用

    全局變量是被整個程序都可見的變量,通常用于存儲程序中需要共享的數(shù)據(jù),本文就來介紹一下Golang中設(shè)置全局變量并在其他文件中使用的方法,感興趣的可以了解一下
    2024-01-01
  • 一文搞懂Go語言操作Redis的方法

    一文搞懂Go語言操作Redis的方法

    Redis是一個開源的內(nèi)存數(shù)據(jù)庫,在項(xiàng)目開發(fā)中redis的使用也比較頻繁,本文介紹了Go語言中g(shù)o-redis庫的基本使用。感興趣的小伙伴們可以參考借鑒一下
    2022-09-09
  • Go語言--切片(Slice)詳解

    Go語言--切片(Slice)詳解

    這篇文章主要介紹了Go語言--切片(Slice),Go 語言切片是對數(shù)組的抽象,下面文章小編將為大家詳細(xì)介紹該內(nèi)容,需要的朋友可以參考下,希望對你有所幫助
    2021-10-10
  • Golang獲取目錄下的文件及目錄信息操作

    Golang獲取目錄下的文件及目錄信息操作

    這篇文章主要介紹了Golang獲取目錄下的文件及目錄信息操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Go語言實(shí)現(xiàn)漢諾塔算法

    Go語言實(shí)現(xiàn)漢諾塔算法

    之前的文章,我們給大家分享了不少漢諾塔算法的實(shí)現(xiàn)語言,包括C、c++、java、python等,今天我們就來使用go語言來實(shí)現(xiàn)一下,需要的小伙伴來參考下吧。
    2015-03-03
  • Go泛型之泛型約束示例詳解

    Go泛型之泛型約束示例詳解

    這篇文章主要給大家介紹了關(guān)于Go泛型之泛型約束的相關(guān)資料,泛型是靜態(tài)語言中的一種編程方式,這種編程方式可以讓算法不再依賴于某個具體的數(shù)據(jù)類型,而是通過將數(shù)據(jù)類型進(jìn)行參數(shù)化,以達(dá)到算法可復(fù)用的目的,需要的朋友可以參考下
    2023-12-12

最新評論

聂拉木县| 三台县| 九龙县| 进贤县| 尼玛县| 定州市| 北宁市| 固镇县| 安化县| 永城市| 洪江市| 新干县| 南靖县| 牡丹江市| 万安县| 阳原县| 尼木县| 定陶县| 沂源县| 汤原县| 蒲城县| 金塔县| 和政县| 泸州市| 滕州市| 临夏市| 新昌县| 屯门区| 灌阳县| 新河县| 大英县| 白城市| 萨嘎县| 湘潭市| 延长县| 左云县| 贡嘎县| 台州市| 郁南县| 志丹县| 手游|