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