# [LeetCode]#806. Number of Lines To Write String

--

Environment: Python 3.8

Key technique: ord

You are given a string `s` of lowercase English letters and an array `widths` denoting how many pixels wide each lowercase English letter is. Specifically, `widths[0]` is the width of `'a'`, `widths[1]` is the width of `'b'`, and so on.

You are trying to write `s` across several lines, where each line is no longer than `100` pixels. Starting at the beginning of `s`, write as many letters on the first line such that the total width does not exceed `100` pixels. Then, from where you stopped in `s`, continue writing as many letters as you can on the second line. Continue this process until you have written all of `s`.

Return an array `result` of length 2 where:

• `result[0]` is the total number of lines.
• `result[1]` is the width of the last line in pixels.

Example 1:

`Input: 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"Output: [3,60]Explanation: You can write s as follows:abcdefghij  // 100 pixels wideklmnopqrst  // 100 pixels wideuvwxyz      // 60 pixels wideThere are a total of 3 lines, and the last line is 60 pixels wide.`

Example 2:

`Input: 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"Output: [2,4]Explanation: You can write s as follows:bbbcccdddaa  // 98 pixels widea            // 4 pixels wideThere are a total of 2 lines, and the last line is 4 pixels wide.`

Analysis:

1. Check s in widths value
2. Summary it.
3. If summary >100, and lines+=1
4. the last is last summary (Summary2 is below example).

Solution:

`class Solution(object):    def numberOfLines(self, widths, S):        lines = 1        ans = 0        for i in S:            width = widths[ord(i) - ord('a')]            ans += width            if ans > 100:                lines += 1                ans = width        return [lines, ans]`

Submissions:

Reference:

https://blog.csdn.net/fuxuemingzhu/article/details/79810381