937 重新排列日誌檔案

2021-10-24 01:34:34 字數 1463 閱讀 3215

題目描述:

你有乙個日誌陣列 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」]

0 <= logs.length <= 100

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

logs[i] 保證有乙個識別符號,並且識別符號後面有乙個字。

方法1:

主要思路:

(1)主要是根據題意自定義字串的比較函式;

(2)先將字元日誌和數字日誌分離,單獨對字母日誌進行排序,然後將數字日誌加到字母日誌後面即可;

class

solution

while

(str2[pos2]

!=' '

)++pos1;

++pos2;

//比較字母日誌的兩部分

return str1.

substr

(pos1)

substr

(pos2)

||(str1.

substr

(pos1)

==str2.

substr

(pos2)

&&s1vector

reorderlogfiles

(vector

& logs)

++pos;

if(str[pos]

>=

'0'&&str[pos]

<=

'9')

else

}//排序字母日誌

sort

(char_str.

begin()

,char_str.

end(

),cmp)

;//將數字日誌排到字母日誌後面

for(string& str:nums_str)

return char_str;}}

;

937 重新排列日誌檔案

weekly contest 110的第一題 重新排列日誌檔案 你有乙個日誌陣列logs。每條日誌都是以空格分隔的字串。對於每條日誌,其第乙個字為字母數字識別符號。然後,要麼 我們將這兩種日誌分別稱為字母日誌和數字日誌。保證每個日誌在其識別符號後面至少有乙個字。將日誌重新排序,使得所有字母日誌都排在...

Leetcode 937 重新排列日誌檔案

你有乙個日誌陣列logs。每條日誌都是以空格分隔的字串。對於每條日誌,其第乙個字為字母數字識別符號。然後,要麼 我們將這兩種日誌分別稱為字母日誌和數字日誌。保證每個日誌在其識別符號後面至少有乙個字。將日誌重新排序,使得所有字母日誌都排在數字日誌之前。字母日誌按字母順序排序,忽略識別符號,識別符號僅用...

LeetCode 937 重新排列日誌檔案

題目描述 你有乙個日誌陣列 logs。每條日誌都是以空格分隔的字串。對於每條日誌,其第乙個字為字母數字識別符號。然後,要麼 識別符號後面的每個字將僅由小寫字母組成,或 識別符號後面的每個字將僅由數字組成。我們將這兩種日誌分別稱為字母日誌和數字日誌。保證每個日誌在其識別符號後面至少有乙個字。將日誌重新...