[LeetCode&Python] Problem 806. Number of Lines To Write String
2024-08-25 01:13:03
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 length26
.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
最新文章
- 恢复SQL Server被误删除的数据(再扩展)
- Java横向、纵向合并图片
- SQL backup&;restore
- easyui反选全选和全不选代码以及方法的使用
- 简单的线程同步问题:两个线程交替执行N次【Synchronized、Lock、ArrayBlockingQueue】
- poj 2065 SETI 高斯消元
- 隐性改变display类型
- Android学习(一)
- ZOJ 1584:Sunny Cup 2003 - Preliminary Round(最小生成树&;amp;&;amp;prim)
- MyEclipse使用总结——修改MyEclipse默认的Servlet和jsp代码模板
- C++/C语言程序代码
- 购物车【JavaWeb小项目、简单版】
- 【转】Python函数默认参数陷阱
- 第三次Scrum冲刺————Life in CCSU
- PE、PB、PEG三大估值法的正确使用方法!
- 【BZOJ1879】[SDOI2009]Bill的挑战(动态规划)
- 【Python基础】安装python第三方库
- 海量交通大数据应用平台MTDAP_nchang的经验记录
- vue数据请求显示loading图
- hdu1159 dp(最长公共子序列)
热门文章
- JSONP跨域后回调函数中的参数使用
- YOLO V2论文理解
- Java 常用对象-基本类型的封装类
- Java 常用对象-BigInteger类
- 合并两个dt
- 《图解Http》 10,11章:构建Web的技术, Web的攻击技术
- Sqlite3,维基百科中的练习:
- warning: LF will be replaced by CRLF in ***. The file will have its original line endings in your working directory.
- springboot实现java代理IP池 Proxy Pool,提供可用率达到95%以上的代理IP
- splay训练