【LeetCode】 -- 68.Text Justification
题目大意:给定一个数组容器,里面存有很多string; 一个int maxWith。让你均匀安排每一行的字符串,能够尽可能的均匀。
解题思路:字符串+贪心。一开始想复杂了,总觉的题意描述的不是很清楚,其实放到实际的场景中去,无非就是想让前端字符串布局变得更加美观,而设计的字符串对其方式(分散对齐)(如果每一行只有一个字符串的话,那么左对齐)。
附上代码:
vector<string> fullJustify(vector<string>& words, int maxWidth)
{
vector<string> ans;
string rec = "";
int lenLine = words[].length();
vector<int>wordId;
wordId.push_back();
for(int i = ; i < words.size(); i ++){
if(lenLine + words[i].length() + <= maxWidth){
lenLine += words[i].length() + ;
wordId.push_back(i);
}else{
rec = "";
rec += words[wordId[]];
if(wordId.size() == ){
string spaces(maxWidth - rec.length(), ' ');
rec += spaces;
}else{
int totalLenOfWords = ;
for(int j = ; j < wordId.size(); j ++){
totalLenOfWords += words[wordId[j]].length();
}
int averageLenOfSpace = , leftLenOfSpace = ;
averageLenOfSpace = (maxWidth - totalLenOfWords) / (wordId.size() - );
leftLenOfSpace = maxWidth - totalLenOfWords - averageLenOfSpace * (wordId.size() - );
for(int j = ; j < wordId.size(); j ++){
string space(averageLenOfSpace, ' ');
rec += space;
if(leftLenOfSpace > ){
rec += " ";
leftLenOfSpace --;
}
rec += words[wordId[j]];
}
}
ans.push_back(rec);
lenLine = words[i].length();
wordId.clear();
wordId.push_back(i);
}
}
if(wordId.size()){
rec = "";
rec += words[wordId[]];
for(int j = ; j < wordId.size(); j ++){
rec += " ";
rec += words[wordId[j]];
}
string spaces(maxWidth - rec.length(), ' ');
rec += spaces;
ans.push_back(rec);
}
return ans;
}
反思: 这道题的难点在于,要记得区分一种特殊状况:当该行只有一个word的时候。代码实现的速度还是比较慢,以后要速度解决这种没啥思维量的手速题。网易笔试告诉我:手速真的很重要。不要被外界因素干扰,心无旁骛的codeing。
最后:今天又看到了一个靠刷题算法逆袭成功的小硕,repeat my words: fuck all the leetcode problems and be a offer Harvester.
【LeetCode】 -- 68.Text Justification的更多相关文章
- 【LeetCode】68. Text Justification
Text Justification Given an array of words and a length L, format the text such that each line has e ...
- 【一天一道LeetCode】#68. Text Justification
一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given a ...
- 【LEETCODE】68、动态规划,medium级别,题目:95、120、91
package y2019.Algorithm.dynamicprogramming.medium; /** * @ProjectName: cutter-point * @Package: y201 ...
- leetcode@ [68] Text Justification (String Manipulation)
https://leetcode.com/problems/text-justification/ Given an array of words and a length L, format the ...
- 【LeetCode】Permutations 解题报告
全排列问题.经常使用的排列生成算法有序数法.字典序法.换位法(Johnson(Johnson-Trotter).轮转法以及Shift cursor cursor* (Gao & Wang)法. ...
- 论文阅读(Xiang Bai——【arXiv2016】Scene Text Detection via Holistic, Multi-Channel Prediction)
Xiang Bai--[arXiv2016]Scene Text Detection via Holistic, Multi-Channel Prediction 目录 作者和相关链接 方法概括 创新 ...
- 论文阅读(Xiang Bai——【CVPR2015】Symmetry-Based Text Line Detection in Natural Scenes)
Xiang Bai--[CVPR2015]Symmetry-Based Text Line Detection in Natural Scenes 目录 作者和相关链接 方法概括 创新点和贡献 方法细 ...
- 论文阅读(Xiang Bai——【CVPR2016】Multi-Oriented Text Detection with Fully Convolutional Networks)
Xiang Bai--[CVPR2016]Multi-Oriented Text Detection with Fully Convolutional Networks 目录 作者和相关链接 方法概括 ...
- 【LeetCode】Minimum Depth of Binary Tree 二叉树的最小深度 java
[LeetCode]Minimum Depth of Binary Tree Given a binary tree, find its minimum depth. The minimum dept ...
随机推荐
- 【3】数据筛选3 - BeautifulSoup4
#目录 1. 开发前准备 2. 不同解析器对比 3. BeautifulSoup4 初始化和节点对象的认识 4. BS4 案例操作:初始化对象文档 5. 节点查 ...
- Promise对象和回调函数,解决异步数据传递问题
下面的代码例子,均已小程序的异步请求数据为案例来说明 1.利用回调函数,来解决异步数据传递问题 异步操作api.js const getBooks = (url, callback) => { ...
- 恶补---bell数
定义 bell数即一个集合划分的数目 示例 前几项的bell数列为 1, 1, 2, 5, 15, 52, 203, 877, 4140, 21147, 115975 ,... 求值方法 1.bell ...
- 【Codeforces 264B】Good Sequences
[链接] 我是链接,点我呀:) [题意] 让你在一个递增数组中选择一个最长子序列使得gcd(a[i],a[i+1])>1 [题解] 设f[i]表示以一个"含有素因子i的数字" ...
- 学渣乱搞系列之Tarjan模板合集
学渣乱搞系列之Tarjan模板合集 by 狂徒归来 一.求强连通子图 #include <iostream> #include <cstdio> #include <cs ...
- nyoj 95 众数问题(set)
众数问题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 所谓众数,就是对于给定的含有N个元素的多重集合,每个元素在S中出现次数最多的成为该元素的重数, 多重集合S重 ...
- python整数转ASCII码
# *-* coding:utf-8 *-* import binascii data = [1441465642, 251096121, -870437532, -944322827, 647240 ...
- docker: 解决centos7下cgroup.procs: no such device的错误
在centos7下,运行docker run的时候会发生cgroup.procs: no such device的错误,解决方法是编辑 /lib/systemd/system/docker.servi ...
- cocos2d-x-3.1 数据结构之Vector (coco2d-x 学习笔记六)
介绍 cocos2d::Vector<T>是一个封装好的能动态增长顺序訪问的容器. cocos2d::Vector<T>中的元素是按序存取的,它的低层实现数据结构是标准模版库中 ...
- 《转》OpenStack对象存储——Swift
OpenStack Object Storage(Swift)是OpenStack开源云计算项目的子项目之中的一个.被称为对象存储.提供了强大的扩展性.冗余和持久性.本文将从架构.原理和实践等几方面讲 ...