1,题目要求
又是一道新的题目,又是一大堆意义不明的要求,因为已经没有新的题目了么?
题目的意思,width为26个元素,每个代表a-z的长度。对应字符串s,总长度是可以得到的,而一行最多可以放100。问一共有几行,而且最后一行长度为多少?其中一个字母如果在这一行放不下,那么只能新开辟一行来进行存放。
2,题目思路
很简单的一道题目,就是简单的字母-数组对应,然后做一个累加判断即可。因为widths中完全是按照1-26的字母顺序进行排列的,因此利用S[i] - ‘a’的方式即可获得相应字母在widths中的索引。
3,程序源码
class Solution {
public:
vector<int> numberOfLines(vector<int>& widths, string S) {
int lineCounter = 0, resLine = 1;
vector<int> res;
for(int i = 0; i<S.size(); i++)
{
if(lineCounter+widths[S[i] - 'a']> 100)
{
lineCounter = widths[S[i] - 'a'];
resLine++;
}
else
{
lineCounter += widths[S[i] - 'a'];
}
}
res.push_back(resLine);
res.push_back(lineCounter);
return res;
}
};