[leetcode] 68. 文本左右对齐(国区第240位AC的~)
国区第240位AC的~我还以为坑很多呢,一次过,嘿嘿,开心


其实很简单,注意题意:使用“贪心算法”来放置给定的单词;也就是说,尽可能多地往每行中放置单词。
也就是说,一行里放置多少word,是一次确定的,后面的行word怎么分配,跟前面的行没有关系。
注意有个隐藏条件:两个单词间至少有一个空格
那么我们就可以把问题分解了:
第一步:找出一行需要放置哪些word(“贪心算法”来放置给定的单词,尽可能多地往每行中放置单词。)
第二步:word怎么放,也就是空格如何分配(平均分配就好了,具体看代码把,写的很清楚)
此题的示例给的很良心,把需要注意的地方都给出来了,你能过示例基本这题就过了
class Solution {
public List<String> fullJustify(String[] words, int maxWidth) {
int index = 0;
List<String> ans = new ArrayList<>();
while (true) {
int curWordCnt = 0;
int curAllWordLength = 0;
List<String> tmp = new ArrayList<>();
// 第一步,先挑出哪些word需要填充
while (index < words.length && curAllWordLength + curWordCnt + words[index].length() <= maxWidth) {
tmp.add(words[index]);
curWordCnt++;
curAllWordLength += words[index].length();
index++;
}
StringBuilder s = new StringBuilder();
s.append(tmp.get(0));
if (index == words.length) {
// 如果是最后一行,特殊处理
for (int i = 1; i < tmp.size(); i++) {
s.append(" ").append(tmp.get(i));
}
while (s.length() < maxWidth) {
s.append(" ");
}
ans.add(s.toString());
break;
}
// 第二步,word怎么排?主要是空格的分配
int spaceLength = maxWidth - curAllWordLength;
int averSpaceLength = 0;
if (curWordCnt > 1) {
averSpaceLength = spaceLength / (curWordCnt - 1);
}
int overflowSpaceLength = spaceLength - averSpaceLength * (curWordCnt - 1);
for (int i = 1; i < tmp.size(); i++) {
for (int j = 0; j < averSpaceLength; j++) {
s.append(" ");
}
if (overflowSpaceLength > 0) {
overflowSpaceLength--;
s.append(" ");
}
s.append(tmp.get(i));
}
// 如果只有一个单词,特殊处理,后面全部填充空格
if (tmp.size() == 1) {
while (s.length() < maxWidth) {
s.append(" ");
}
}
ans.add(s.toString());
}
return ans;
}
}
[leetcode] 68. 文本左右对齐(国区第240位AC的~)的更多相关文章
- Java实现 LeetCode 68 文本左右对齐
68. 文本左右对齐 给定一个单词数组和一个长度 maxWidth,重新排版单词,使其成为每行恰好有 maxWidth 个字符,且左右两端对齐的文本. 你应该使用"贪心算法"来放置 ...
- Leetcode 68.文本左右对齐
文本左右对齐 给定一个单词数组和一个长度 maxWidth,重新排版单词,使其成为每行恰好有 maxWidth 个字符,且左右两端对齐的文本. 你应该使用"贪心算法"来放置给定的单 ...
- LeetCode(68):文本左右对齐
Hard! 题目描述: 给定一个单词数组和一个长度 maxWidth,重新排版单词,使其成为每行恰好有 maxWidth 个字符,且左右两端对齐的文本. 你应该使用“贪心算法”来放置给定的单词:也就是 ...
- [LeetCode] Text Justification 文本左右对齐
Given an array of words and a length L, format the text such that each line has exactly L characters ...
- html文本垂直居中对齐
html文本垂直居中对齐,代码如下: <div id="box" style="height:100px; line-height:100px; border:1p ...
- CSS3 justify 文本两端对齐
浏览器参照基准:Firefox4 and Later, Chrome5 and Later, Safari5 and Later, Opera10.53 and Later, IE5.5 and La ...
- iOS上让按钮文本左对齐问题
一,问题分析 1.在做历史记录视图的时候,由于让键盘退出后才能触发表格的 didselect 那个代理方法,也就是得点两下才触发,而表格中的按钮点一下就可以立即响应. 2.于是我就有了用按钮事件代替 ...
- leetcode@ [68] Text Justification (String Manipulation)
https://leetcode.com/problems/text-justification/ Given an array of words and a length L, format the ...
- 【CSS学习】--- 文本水平对齐属性text-align和元素垂直对齐属性vertical-align
一.文本水平对齐属性---text-align text-align属性是将块级标签以及单元格里面的内容进行相应的对齐,块级标签里的内联元素会被整体进行移动,而子块级元素或子单元格则会继承父元素的te ...
随机推荐
- Proxy.newProxyInstance源码探究
JDK动态代理案例实现:实现 InvocationHandler 接口重写 invoke 方法,其中包含一个对象变量和提供一个包含对象的构造方法: public class MyInvocationH ...
- HTTP 基础(特性、请求方法、状态码、字段)
1. HTTP 简介(含义.特性.缺点) 2. HTTP 报文 3. GET 和 POST 4. 状态码 5. HTTP 头字段 1. HTTP 简介 HTTP 的含义 HTTP (HyperText ...
- C - Harmonic Number(调和级数+欧拉常数)
In mathematics, the nth harmonic number is the sum of the reciprocals of the first n natural numbers ...
- 服务器安装node全教程
我的服务器centos,安装node时出了点小麻烦,在这里记述我的方法. 1.进入node下载网站https://nodejs.org/en/download/,这里右键复制下载链接 2.进入cent ...
- 【SpringBoot】Springboot2.x整合SpringSecurity
一.Spring Security是什么?有什么作用(核心作用)?以及如何阅读本篇文章 1.是什么 Spring Security是Spring家族的一个强大的安全框架,与Springboot整合的比 ...
- SpringCloud之远程调用OpenFeign和Ribbon
Ribbon.Feign和OpenFeign的区别 SpringCloudAlibaba微服务实战教程系列 Spring Cloud 微服务架构学习记录与示例 一 简介 Feign是Netflflix ...
- 反病毒攻防研究第004篇:利用WinRAR与AutoRun.inf实现自启动
一.前言 由之前的一系列研究可以发现,为了使得"病毒"能够实现自启动,我也是煞费苦心,采取了各种方式,往往需要编写冗长的代码并且还需要掌握系统底层或注册表的很多知识才可以.而这次我 ...
- Linux中正则表达式和字符串的查询、替换(tr/diff/wc/find)
目录 正则表达式 基本正则表达式 扩展正则表达式 grep tr diff du wc find 正则表达式 正则表达式,又称正规表示法.常规表示法( Regular Expression,在代码中常 ...
- Windows Server系统加固
目录 账户管理.认证授权 管理账户 管理口令 授权 审核策略 IP协议安全配置 设备其他配置操作 账户管理.认证授权 管理账户 说明: 对于管理员账号,要求更改缺省账户名称,并且禁用 guest (来 ...
- Django中图形验证码(django-simple-captcha)
django-simple-captcha 在网站开发的登录页面中,经常会需要使用到图形验证码来验证.在Django中,django-simple-captcha库包提供了图形验证码的使用. 下面我们 ...