zoukankan      html  css  js  c++  java
  • 1011. 字符串写入的行数

    1011. 字符串写入的行数

    中文English

    把字符串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长度.
    

    注意事项

    • S的长度范围为[1, 1000].
    • S仅有26个小写字母组成.
    • widths的长度为26.
    • widths[i]的范围为[2, 10].
    输入测试数据 (每行一个参数)如何理解测试数据?
    class Solution:
        """
        @param widths: an array
        @param S: a string
        @return: how many lines have at least one character from S, and what is the width used by the last such line
        """
        '''
        大致思路:
        1.widths里面存有26个字符分别对应的数值,可以生成一个字典,各个字符对应数值,给出一个方法 return_s_dic
        2.初始化hang = 0,res = 0,循环S,如果S + self.return_s_dic('') >= 100,换行,hang += 1,res = 0,重置。最终返回hang和res
        '''
        def numberOfLines(self,widths,S):
            s_dic = self.return_s_dic(widths)
    
            hang,res = 1,0
            for i in S:
                if res + s_dic[i] > 100:
                    hang += 1
                    res = 0
                res += s_dic[i]
            return [hang,res]
    
        def return_s_dic(self,widths):
            #生成一个映射字典
            dic = {}
            s = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
            i = 0
            for column in s:
                dic[column] = widths[i]
                i += 1
            return dic
  • 相关阅读:
    #在蓝懿学习iOS的日子#Day10
    #在蓝懿学习iOS的日子#Day9
    #在蓝懿学习iOS的日子#第三个练习日
    #在蓝懿学习iOS的日子#Day8
    WCF基础:绑定(二)
    WCF基础:绑定(三)
    WCF基础:绑定(一)
    MVC框架中的值提供机制(三)
    MVC框架中的值提供机制(二)
    MVC框架中的值提供机制(一)
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/12602707.html
Copyright © 2011-2022 走看看