演算法練習 字串處理 poj2998 日誌排序

2021-09-26 11:00:46 字數 2437 閱讀 7627

總時間限制: 

1000ms

記憶體限制: 

65536kb 描述

有乙個網路日誌,記錄了網路中計算任務的執**況,每個計算任務對應一條如下形式的日誌記錄:「hs_10000_p」是計算任務的名稱,「2007-01-17 19:22:53,315」是計算任務開始執行的時間「年-月-日 時:分:秒,毫秒」, 「253.035(s)」是計算任務消耗的時間(以秒計)

hs_10000_p 2007-01-17 19:22:53,315 253.035(s)

請你寫乙個程式,對日誌中記錄計算任務進行排序。時間消耗少的計算任務排在前面,時間消耗多的計算任務排在後面。如果兩個計算任務消耗的時間相同,則將開始執行時間早的計算任務排在前面。 輸入

日誌中每個記錄是乙個字串,每個字串佔一行。最後一行為空行,表示日誌結束。日誌中最多可能有10000條記錄。

計算任務名稱的長度不超過10,開始執行時間的格式是yyyy-mm-dd hh:mm:ss,mmm,消耗時間小數點後有三位數字。

計算任務名稱與任務開始時間、消耗時間之間以乙個或多個空格隔開,行首和行尾可能有多餘的空格。 輸出

排序好的日誌記錄。每個記錄的字串各佔一行。

輸入的格式與輸入保持一致,輸入包括幾個空格,你的輸出中也應該包含同樣多的空格。

樣例輸入

hs_10000_p   2007-01-17 19:22:53,315     253.035(s)

hs_10001_p 2007-01-17 19:22:53,315 253.846(s)

hs_10002_m 2007-01-17 19:22:53,315 129.574(s)

hs_10002_p 2007-01-17 19:22:53,315 262.531(s)

hs_10003_m 2007-01-17 19:22:53,318 126.622(s)

hs_10003_p 2007-01-17 19:22:53,318 136.962(s)

hs_10005_m 2007-01-17 19:22:53,318 130.487(s)

hs_10005_p 2007-01-17 19:22:53,318 253.035(s)

hs_10006_m 2007-01-17 19:22:53,318 248.548(s)

hs_10006_p 2007-01-17 19:25:23,367 3146.827(s)

樣例輸出

hs_10003_m   2007-01-17 19:22:53,318     126.622(s)

hs_10002_m 2007-01-17 19:22:53,315 129.574(s)

hs_10005_m 2007-01-17 19:22:53,318 130.487(s)

hs_10003_p 2007-01-17 19:22:53,318 136.962(s)

hs_10006_m 2007-01-17 19:22:53,318 248.548(s)

hs_10000_p 2007-01-17 19:22:53,315 253.035(s)

hs_10005_p 2007-01-17 19:22:53,318 253.035(s)

hs_10001_p 2007-01-17 19:22:53,315 253.846(s)

hs_10002_p 2007-01-17 19:22:53,315 262.531(s)

hs_10006_p 2007-01-17 19:25:23,367 3146.827(s)

題目理解:排序的cmp函式,

主要需要處理的是輸入的格式,輸入可以帶空格的行,最後又要按照原樣輸出,而且還要提取原來字串中的一些資訊,所以就要用到sscanf這個函式。【注意乙個要加&】

最後結束輸入是空行 用到

while(tmp=cin.get()!='\n')

或者用getline輸入的字串的第乙個判斷是否是\0

比較函式一開始寫的wa;ac如下,應該是不能return乙個整數這樣的

bool cmp(r a,r b)

else if(strcmp(a.syear,b.syear)!=0)record[10010];

char str[300];

bool cmp(r a,r b)

else if(strcmp(a.syear,b.syear)!=0)

else

}int main()

sort(record,record+n,cmp);

for(int i=0;ireturn 0;

}

演算法練習 字串包含

給定兩個分別由字母組成的字串a和字串b,字串b的長度比字串a短。請問,如何最快地判斷字串b中所有字母是否都在字串a裡?為了簡單起見,我們規定輸入的字串只包含大寫英文本母,請實現函式bool stringcontains string a,string b 比如,如果是下面兩個字串 string 1 ...

LeetCode初級演算法練習 字串

344 反轉字串 請編寫乙個函式,其功能是將輸入的字串反轉過來。示例 輸入 s hello 返回 olleh class solution def reversestring self,s type s str rtype str 開始 結束 步進 步進預設 1 return s 1 7 反轉整數 ...

串結構練習 字串匹配

time limit 1000ms memory limit 65536k 給定兩個字串string1和string2,判斷string2是否為string1的子串。輸入包含多組資料,每組測試資料報含兩行,第一行代表string1,第二行代表string2,string1和string2中保證不出現...