【LeetCode】 -- 68.Text Justification
2016-03-23 20:43
387 查看
题目大意:给定一个数组容器,里面存有很多string; 一个int maxWith。让你均匀安排每一行的字符串,能够尽可能的均匀。
解题思路:字符串+贪心。一开始想复杂了,总觉的题意描述的不是很清楚,其实放到实际的场景中去,无非就是想让前端字符串布局变得更加美观,而设计的字符串对其方式(分散对齐)(如果每一行只有一个字符串的话,那么左对齐)。
附上代码:
反思: 这道题的难点在于,要记得区分一种特殊状况:当该行只有一个word的时候。代码实现的速度还是比较慢,以后要速度解决这种没啥思维量的手速题。网易笔试告诉我:手速真的很重要。不要被外界因素干扰,心无旁骛的codeing。
最后:今天又看到了一个靠刷题算法逆袭成功的小硕,repeat my words: fuck all the leetcode problems and be a offer Harvester.
解题思路:字符串+贪心。一开始想复杂了,总觉的题意描述的不是很清楚,其实放到实际的场景中去,无非就是想让前端字符串布局变得更加美观,而设计的字符串对其方式(分散对齐)(如果每一行只有一个字符串的话,那么左对齐)。
附上代码:
vector<string> fullJustify(vector<string>& words, int maxWidth) { vector<string> ans; string rec = ""; int lenLine = words[0].length(); vector<int>wordId; wordId.push_back(0); for(int i = 1; i < words.size(); i ++){ if(lenLine + words[i].length() + 1 <= maxWidth){ lenLine += words[i].length() + 1; wordId.push_back(i); }else{ rec = ""; rec += words[wordId[0]]; if(wordId.size() == 1){ string spaces(maxWidth - rec.length(), ' '); rec += spaces; }else{ int totalLenOfWords = 0; for(int j = 0; j < wordId.size(); j ++){ totalLenOfWords += words[wordId[j]].length(); } int averageLenOfSpace = 0, leftLenOfSpace = 0; averageLenOfSpace = (maxWidth - totalLenOfWords) / (wordId.size() - 1); leftLenOfSpace = maxWidth - totalLenOfWords - averageLenOfSpace * (wordId.size() - 1); for(int j = 1; j < wordId.size(); j ++){ string space(averageLenOfSpace, ' '); rec += space; if(leftLenOfSpace > 0){ 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[0]]; for(int j = 1; 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.
相关文章推荐
- Plus One---66
- 【图】最小生成树Prim算法和Kruskal算法
- Leetcode 131. Palindrome Partitioning
- PHP错误处理方式
- python 网络编程之 UDP编程
- swt中的多线程机制
- [Android Studio] Android Studio常用快捷键
- android无效代码,资源文件,原生文件对apk大小的影响
- C++编译出现 错误 1 error C2533: “TA::{ctor}”: 构造函数不能有返回类型
- 第4周项目3(2)小学生算数能力测试
- 作业3个人项目耗时记录
- 目前最全的浏览器/CSS选择器兼容性总结(2009-8-10更新)
- 星号图问题
- Alluxio源码分析读数据:打开文件选项OpenFileOptions
- android 开发技巧(12)--更改 Toast 显示位置的技巧
- iOS-手势初阶
- java中新起一个线程
- 第4周项目4(4)理解默认参数
- poj1007
- [转载]关于标准电阻阻值的说明(E6、E12、E24、E48、E96、E192)