博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode]Text Justification
阅读量:4151 次
发布时间:2019-05-25

本文共 3447 字,大约阅读时间需要 11 分钟。

class Solution {//simplify the problempublic:	vector
fullJustify(vector
&words, int L) { // Start typing your C/C++ solution below // DO NOT write int main() function vector
ret; int begin = 0, len = 0, n = words.size(); for (int i = 0; i < n; ++i) { if (len + words[i].size() + (i - begin) > L) { ret.push_back(connect(words, begin, i - 1, len, L, false));//push back one line begin = i; len = 0; } len += words[i].size(); } ret.push_back(connect(words, begin, n - 1, len, L, true)); return ret; } string connect(vector
&words, int begin, int end, int len, int L, bool leftJustify) { string s; int n = end - begin + 1; for (int i = 0; i < n; ++i) { s += words[begin + i]; addSpaces(s, i, n - 1, L - len, leftJustify); } if (s.size() < L) s.append(L - s.size(), ' '); return s; } void addSpaces(string &s, int i, int n, int L, bool leftJustify) { if (n < 1 || i > n - 1) return; int spaces = leftJustify ? 1 : (L / n + (i < (L % n) ? 1 : 0)); s.append(spaces, ' '); }};

second time

class Solution {public:    string leftJustified(int L, vector
& words, int start, int end) { string ans; for(int i = start; i < end; ++i) { ans = ans+words[i]; ans.push_back(' '); } ans = ans+words[end]; int curCnt = 0; for(int i = start; i <= end; ++i) curCnt += words[i].size(); curCnt += (end-start); int lastCnt = L-curCnt; ans.append(lastCnt, ' '); return ans; } string evenJustified(int L, vector
& words, int start, int end) { int curCnt = 0; for(int i = start; i <= end; ++i) curCnt += words[i].size(); curCnt += (end-start); int leftCnt = L-curCnt; string ans; if(end-start >= 1) { int addCnt = leftCnt/(end-start); int extraCnt = leftCnt%(end-start); for(int i = start, j = 1; i < end; ++i, ++j) { int spaceCnt = 1+addCnt; if(j <= extraCnt) spaceCnt++; ans = ans+words[i]; ans.append(spaceCnt, ' '); } ans = ans+words[end]; } else { ans = ans+words[end]; ans.append(L-words[end].size(), ' '); } return ans; } vector
fullJustify(vector
&words, int L) { // Start typing your C/C++ solution below // DO NOT write int main() function if(words.size() == 0 || L == 0) return words; int start = 0; vector
ans; while(start < words.size()) { int curWordLen = 0; int curWordCnt = 0; int i; for(i = start; i < words.size(); ++i) { curWordLen += words[i].size(); curWordCnt++; if(curWordLen+curWordCnt-1 > L) { i--; break; } } if(i == words.size()) { i--; string tmp = leftJustified(L, words, start, i); ans.push_back(tmp); } else { string tmp = evenJustified(L, words, start, i); ans.push_back(tmp); } start = i+1; } return ans; }};

转载地址:http://yhxti.baihongyu.com/

你可能感兴趣的文章
JavaScript slice() 方法
查看>>
JavaScript substring() 方法
查看>>
HTML 5 新的表单元素 datalist keygen output
查看>>
(转载)正确理解cookie和session机制原理
查看>>
jQuery ajax - ajax() 方法
查看>>
将有序数组转换为平衡二叉搜索树
查看>>
最长递增子序列
查看>>
从一列数中筛除尽可能少的数,使得从左往右看这些数是从小到大再从大到小...
查看>>
判断一个整数是否是回文数
查看>>
经典shell面试题整理
查看>>
腾讯的一道面试题—不用除法求数字乘积
查看>>
素数算法
查看>>
java多线程环境单例模式实现详解
查看>>
将一个数插入到有序的数列中,插入后的数列仍然有序
查看>>
在有序的数列中查找某数,若该数在此数列中,则输出它所在的位置,否则输出no found
查看>>
万年历
查看>>
作为码农你希望面试官当场指出你错误么?有面试官这样遭到投诉!
查看>>
好多程序员都认为写ppt是很虚的技能,可事实真的是这样么?
查看>>
如果按照代码行数发薪水会怎样?码农:我能刷到公司破产!
查看>>
程序员失误造成服务停用3小时,只得到半月辞退补偿,发帖喊冤
查看>>