Text Justification

2024-06-18 17:48
文章标签 text justification

本文主要是介绍Text Justification,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目:

Given an array of words and a length L, format the text such that each line has exactly L characters and is fully (left and right) justified.

You should pack your words in a greedy approach; that is, pack as many words as you can in each line. Pad extra spaces ' ' when necessary so that each line has exactly Lcharacters.

Extra spaces between words should be distributed as evenly as possible. If the number of spaces on a line do not divide evenly between words, the empty slots on the left will be assigned more spaces than the slots on the right.

For the last line of text, it should be left justified and no extra space is inserted between words.

For example,
words["This", "is", "an", "example", "of", "text", "justification."]
L16.

Return the formatted lines as:

["This    is    an","example  of text","justification.  "
]

Note: Each word is guaranteed not to exceed L in length.

分析:
1、每个单词之间至少要有一个空格

2、如果剩下的字符数正好是空格数的倍数,那空格就平均分配;如果不是,f the number of spaces on a line do not divide evenly between words, the empty slots on the left will be assigned more spaces than the slots on the right.这句话的意思应该是说,加入有5个多余空位,但是有三个空格,那么前两个都是2个,后面一个空格是一个吧

3、最后一行是不需要分配空格,只放在最后面就好了,所以要拿出来特殊处理

参考代码如下:

public class Solution {public ArrayList<String> fullJustify(String[] words, int L) {ArrayList<String> res = new ArrayList<String>();if(words==null || words.length==0)return res;int count = 0;int last = 0;for(int i=0;i<words.length;i++){if(count+words[i].length()+(i-last)>L){int spaceNum = 0;int extraNum = 0;if(i-last-1>0){spaceNum = (L-count)/(i-last-1);extraNum = (L-count)%(i-last-1);}StringBuilder str = new StringBuilder();for(int j=last;j<i;j++){str.append(words[j]);if(j<i-1){for(int k=0;k<spaceNum;k++){str.append(" ");}if(extraNum>0){str.append(" ");}extraNum--;}}for(int j=str.length();j<L;j++){str.append(" ");}       res.add(str.toString());count=0;last=i;}count += words[i].length();}StringBuilder str = new StringBuilder();for(int i=last;i<words.length;i++){str.append(words[i]);if(str.length()<L)str.append(" ");}for(int i=str.length();i<L;i++){str.append(" ");}res.add(str.toString());return res;}
}


这篇关于Text Justification的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1072686

相关文章

【Python报错已解决】AttributeError: ‘list‘ object has no attribute ‘text‘

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、问题描述1.1 报错示例1.2 报错分析1.3 解决思路 二、解决方法2.1 方法一:检查属性名2.2 步骤二:访问列表元素的属性 三、其他解决方法四、总结 前言 在Python编程中,属性错误(At

【ReactJS】困惑于text/babel与browser.js还是babel.js?

使用JSX   使用JSX,可以极大的简化React元素的创建,JSX抽象化了React.createElement()函数的使用,其语法风格类似于HTML语法风格。对比如下代码可以让你更好的理解这一点。 // 使用React.createElement()return React.createElement('div',null,'Hello',this.props.name);//使用J

Android:EditText在hint字体大小和text字体大小不一致时的设置方法

今天碰到一个需求,有一个输入框EditText,要求输入某项金额,要求在未输入文字之前,hint提示,输入文字之后显示输入的文字,要求是未输入内容时hint字体大小为14sp,输入金额之后字体大小要变成30sp。,可是EditText本身没有这个属性可以设置,怎么办呢,只有在代码中添加监听事件了: /*** 添加监听,在hint时和text时切换字体大小*/cetMoney.addTextCha

Sublime Text 3搭建PHP开发环境说明

1、设置环境变量 Windows系统环境变量path增加php.exe所在目录路径 2、创建PHP编译系统 添加 PHP 的 build system,如图所示, Tools->Build System-> New Build System : 新建一个,默认的内容是:{ "shell_cmd": "make"}修改为:{ "cmd": ["php", "$file"], "file_re

多字节、宽字节、兼容字节(TEXT) 相关操作汇总

常用函数对照 ANSIUNICODE通用说明数据类型(char.h)(wchar.h)(tchar.h) charwchar_tTCHAR char *wchar_t *TCHAR* LPSTRLPWSTRLPTSTR LPCSTRLPCWSTRLPCTSTR     字符串转换atoi_wtoi_ttoi把字符串转换成整数(int)atol_wtol_ttol把字符串转换成长整型数(long)

Sublime Text 3常用快键键总结

通用(General) ↑↓←→:上下左右移动光标,注意不是不是 KJHL !Alt:调出菜单Ctrl + Shift + P:调出命令板(Command Palette)Ctrl + ` :调出控制台 编辑(Editing) Ctrl + Enter:在当前行下面新增一行然后跳至该行Ctrl + Shift + Enter:在当前行上面增加一行并跳至该行Ctrl + ←/→:进行逐词移动

sublime_text中如何使用快捷键打开默认浏览器

原创:http://blog.csdn.net/u013383042/article/details/51058899 1、在SublimeText下打开该路径:preference - key bindings - user 2、在以下打开窗口中输入如下语句: {"keys": ["ctrl+r"],"command": "open_in_browser"} 如上图所示,”ctrl+

sublime text 3 显示空格和Tab

因为sublime text3确实太好用了所以也用它写代码了,可是在Python3 中不支持Tab键和空格键混用所以要改变显示方式,以便方便使用,突然 发现网上的资料太少,所以我把它贴了出来希望帮助更多的人 第一步把preferences.sublime-setting-Default里面 的"draw_white_space": "selection",复制到preferences.

Core Text Objective-C Wrapper

Core Text Objective-C Wrapper https://github.com/akosma/CoreTextWrapper Introduction(介绍) One of the most promising and mysterious new frameworks introduced in iOS 3.2 is Core Text. Apple define

jquery text val html区别

jquery方法html、ext 、val区别: 1.html html():获得第一个匹配元素的HTML内容。 html(value):设置第一个匹配元素的HTML内容。 2.text text():取得所有匹配元素的文本内容。 text(value):设置所有匹配元素的文本内容。 3.val val():获得第一个匹