lintcode 1011 字串寫入的行數

2021-09-26 01:29:19 字數 1027 閱讀 8617

把字串s中的字元從左到右寫入行中。 每行最大寬度度為100,如果往後新寫乙個字元導致該行寬度超過100,則寫入下一行。

注意:乙個字元的寬度不為1!給定乙個陣列widths,其中widths[0]是字元a的寬度,widths[1]是字元b的寬度,…,widths[25]是字元』z』的寬度。

問:把s全部寫完,至少需要多少行?最後一行用去的寬度是多少? 將結果作為長度為2的整數列表返回。

樣例1 :

輸入:

widths = [10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10]

s = "abcdefghijklmnopqrstuvwxyz"

輸出: [3, 60]

解釋:

每個字元的寬度都是10. 為了把這26個字元都寫進去,需要兩個整行和乙個用去60長度的行。

樣例2:

輸入:

widths = [4,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10]

s = "bbbcccdddaaa"

輸出: [2, 4]

解釋:

除'a'以外所有字元都是寬度為10,

"bbbcccdddaa" 會覆蓋9 * 10 + 2 * 4 = 98長度.

而最後的'a'則會寫入第二行且.

所以結果是2行,最後一行是4長度.

思路:起始長度sum為0,起始行數line為1,如果sum+當前字元長度不大於100,則不換行,長度增加,如果大於,則行數增加,sum=0,接著sum再加上當前字元長度即可

class solution 

}result.push_back(line);

result.push_back(sum);

return result;

}};

LintCode 13 字串查詢

對於乙個給定的 source 字串和乙個 target 字串,你應該在 source 字串中找出 target 字串出現的第乙個位置 從0開始 如果不存在,則返回 1。如果 source source 和 target target 返回 1。如果 source abcdabcdefg 和 targ...

LintCode 13 字串查詢

對於乙個給定的 source 字串和乙個 target 字串,你應該在 source 字串中找出 target 字串出現的第乙個位置 從0開始 如果不存在,則返回 1。說明 在面試中我是否需要實現kmp演算法?樣例 如果 source source 和 target target 返回 1。如果 s...

LintCode 13 字串查詢

題目描述 對於乙個給定的 source 字串和乙個 target 字串,你應該在 source 字串中找出 target 字串出現的第乙個位置 從0開始 如果不存在,則返回 1。說明 在面試中我是否需要實現kmp演算法?不需要,當這種問題出現在面試中時,面試官很可能只是想要測試一下你的基礎應用能力。...