【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 ...
随机推荐
- Python基础(九) 内置模块
今天学习Python中的模块,模块类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才能完成(函 ...
- Springboot druid监控配置
@Configuration public class DataSourceConfig { @Bean public ServletRegistrationBean statViewServlet( ...
- hadoop balancer 二
1.每次迭代一个datanode会移动不超过如下两者中较小的一个的数据量 1)10G 2)能力阈值 dfs.datanode.balance.bandwidthPerSec 每次迭代时间不会超过20分 ...
- Mac: 通过蓝牙用安卓手机向Mac发送文件
1. 打开Mac蓝牙和手机蓝牙 2. 配对 3. mac 系统偏好设置>共享 勾蓝牙共享,选接受并存储 4. 手机发送文件
- Spring注解配置定时任务<task:annotation-driven/>
http://m.blog.csdn.net/article/details?id=50945311 首先在配置文件头部的必须要有: xmlns:task="http://www.sprin ...
- ssh远程连接出现someone counld be eavesdropping on you right now 的错误
master主机通过ssh远程连接slaves机子时出现下述错误 解决的方法: 一.删除/root/.ssh/下的kown_hosts文件 二.在master机子上又一次运行scp id_dsa.pu ...
- Java Web开发基础(1)-Servlet
概述 Servlet技术是对webserver的扩展,要理解这个,可能先了解一下什么是Webserver以及它的功能,特别是它的不足是非常有帮助的,可參考:点击打开链接.另外.Servlet也是一个用 ...
- python基础练习-猜年龄、编写登陆接口小程序
python基础练习: 一.猜年龄 , 可以让用户最多猜三次! age=40 count = 1 while count <=3 : user_guess=int(input("i ...
- Yii中使用RBAC全然指南
本人小菜鸟一仅仅,为了自我学习和交流PHP(jquery,linux,lamp,shell,javascript,server)等一系列的知识,小菜鸟创建了一个群. 希望光临本博客的人能够进来交流. ...
- 关于C语言指针的一些新认识(1)
Technorati 标签: 指针,数组,汇编,C语言 前言 指针是C语言的精华,但我对它一直有种敬而远之的感觉,因为一个不小心就可能让你的程序陷入莫名其妙的麻烦之中.所以,在处理字符串时,我总是能用 ...