题目大意:给定一个数组容器,里面存有很多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.

最新文章

  1. RDIFramework.NET框架Web中datagrid与treegrid控件自动生成右键菜单与列标题右键菜单
  2. Android手机_软件01
  3. 页面超慢,zabbix却没报警
  4. 求三数中Max和猜拳游戏
  5. knockoutjs表格增加更新删除
  6. Python-Day11 RabbitMQ/redis
  7. 处理 eclipse 导入报错 Invalid project description,问题
  8. Linux系统监控
  9. js正则表达式验证字符长度
  10. agnentX学习存在疑问?
  11. SpringMVC+Mybatis架构中的问题记录
  12. java_web学习(十) 显示mysql中的数据
  13. 在linux环境下安装JDK并配置环境变量
  14. 2019年3月29日至30日深圳共创力《成功的产品经理DNA》在深圳公开课成功举办
  15. jQuery on()方法使用
  16. bzoj1214 [HNOI2004]FTP服务器
  17. openvpn部署centos7
  18. C# 数字转换成汉字大写 数值转换成汉字大写
  19. ASP.NET和ASP的区别是什么
  20. JS高级. 06 缓存、分析解决递归斐波那契数列、jQuery缓存、沙箱、函数的四种调用方式、call和apply修改函数调用方法

热门文章

  1. ndk编译libpcap 1.7.4(最终解决方法)
  2. Java Web学习总结(30)——Service层在MVC框架中的意义和职责
  3. fetch api &amp; response header
  4. 【BZOJ4398】福慧双修(二进制,最短路)
  5. graylog 市场
  6. [bzoj4033][HAOI2015]树上染色_树形dp
  7. vijos——1164 曹冲养猪
  8. SfM执行流程
  9. socket短连接、长连接
  10. [JavaEE] Implement a REST Endpoint