We are to write the letters of a given string S, from left to right into lines. Each line has maximum width 100 units, and if writing a letter would cause the width of the line to exceed 100 units, it is written on the next line. We are given an array widths, an array where widths[0] is the width of 'a', widths[1] is the width of 'b', ..., and widths[25] is the width of 'z'.

Now answer two questions: how many lines have at least one character from S, and what is the width used by the last such line? Return your answer as an integer list of length 2.

Example :
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:
All letters have the same length of 10. To write all 26 letters,
we need two full lines and one line with 60 units.
Example :
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:
All letters except 'a' have the same length of 10, and
"bbbcccdddaa" will cover 9 * 10 + 2 * 4 = 98 units.
For the last 'a', it is written on the second line because
there is only 2 units left in the first line.
So the answer is 2 lines, plus 4 units in the second line.

Note:

  • The length of S will be in the range [1, 1000].
  • S will only contain lowercase letters.
  • widths is an array of length 26.
  • widths[i] will be in the range of [2, 10].

This problem is very simple.

class Solution:
def numberOfLines(self, widths, S):
"""
:type widths: List[int]
:type S: str
:rtype: List[int]
"""
NumOfLine=1
currentWidth=0
iA=ord('a') for c in S:
widthNo=ord(c)-iA
cwidth=widths[widthNo]
if currentWidth+cwidth>100:
NumOfLine+=1
currentWidth=cwidth
else:
currentWidth+=cwidth return NumOfLine,currentWidth

  

最新文章

  1. 恢复SQL Server被误删除的数据(再扩展)
  2. Java横向、纵向合并图片
  3. SQL backup&restore
  4. easyui反选全选和全不选代码以及方法的使用
  5. 简单的线程同步问题:两个线程交替执行N次【Synchronized、Lock、ArrayBlockingQueue】
  6. poj 2065 SETI 高斯消元
  7. 隐性改变display类型
  8. Android学习(一)
  9. ZOJ 1584:Sunny Cup 2003 - Preliminary Round(最小生成树&&prim)
  10. MyEclipse使用总结——修改MyEclipse默认的Servlet和jsp代码模板
  11. C++/C语言程序代码
  12. 购物车【JavaWeb小项目、简单版】
  13. 【转】Python函数默认参数陷阱
  14. 第三次Scrum冲刺————Life in CCSU
  15. PE、PB、PEG三大估值法的正确使用方法!
  16. 【BZOJ1879】[SDOI2009]Bill的挑战(动态规划)
  17. 【Python基础】安装python第三方库
  18. 海量交通大数据应用平台MTDAP_nchang的经验记录
  19. vue数据请求显示loading图
  20. hdu1159 dp(最长公共子序列)

热门文章

  1. JSONP跨域后回调函数中的参数使用
  2. YOLO V2论文理解
  3. Java 常用对象-基本类型的封装类
  4. Java 常用对象-BigInteger类
  5. 合并两个dt
  6. 《图解Http》 10,11章:构建Web的技术, Web的攻击技术
  7. Sqlite3,维基百科中的练习:
  8. warning: LF will be replaced by CRLF in ***. The file will have its original line endings in your working directory.
  9. springboot实现java代理IP池 Proxy Pool,提供可用率达到95%以上的代理IP
  10. splay训练