力扣68.文本左右对齐

2024-09-01 01:36
文章标签 力扣 文本 68 左右 对齐

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

import java.util.ArrayList;
import java.util.List;class Solution {public List<String> fullJustify(String[] words, int maxWidth) {List<String> result = new ArrayList<>(); // 创建一个列表用于存储结果int index = 0; // 初始化索引为0,用于遍历单词数组while (index < words.length) { // 当索引小于单词数组长度时,继续循环int count = words[index].length(); // 计算当前单词的长度int last = index + 1; // 初始化last为当前索引+1,用于确定当前行可以容纳的单词范围while (last < words.length) { // 当last小于单词数组长度时,继续循环if (words[last].length() + count + 1 > maxWidth) break; // 如果下一个单词加上当前单词长度和空格超过最大宽度,跳出循环count += words[last].length() + 1; // 累加单词长度和空格last++; // 更新last的值}StringBuilder builder = new StringBuilder(); // 创建一个StringBuilder用于构建当前行的字符串int diff = last - index - 1; // 计算当前行可以容纳的单词数量if (last == words.length || diff == 0) { // 如果是最后一行或者只有一个单词for (int i = index; i < last; i++) { // 遍历当前行的单词builder.append(words[i] + " "); // 将单词添加到builder中,并在单词之间添加空格}builder.deleteCharAt(builder.length() - 1); // 删除最后一个多余的空格while (builder.length() < maxWidth) { // 如果当前行长度小于最大宽度,添加空格builder.append(" ");}} else { // 如果不是最后一行且有多个单词int spaces = (maxWidth - count) / diff; // 计算每个单词之间的平均空格数int r = (maxWidth - count) % diff; // 计算需要额外添加一个空格的位置数for (int i = index; i < last - 1; i++) { // 遍历当前行的单词,除了最后一个builder.append(words[i]); // 添加单词builder.append(" "); // 添加空格for (int j = 0; j < spaces + (i - index < r ? 1 : 0); j++) { // 根据平均空格数和额外空格数添加空格builder.append(" ");}}builder.append(words[last - 1]); // 添加最后一个单词}result.add(builder.toString()); // 将构建好的字符串添加到结果列表中index = last; // 更新索引为last,准备处理下一行}return result; // 返回结果列表}
}

这篇关于力扣68.文本左右对齐的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

两数之和--力扣1

两数之和 题目思路C++代码 题目 思路 根据题目要求,元素不能重复且不需要排序,我们这里使用哈希表unordered_map。注意题目说了只对应一种答案。 所以我们在循环中,使用目标值减去当前循环的nums[i],得到差值,如果我们在map中能够找到这个差值,就说明存在两个整数的和为目标值。 如果没有找到,就将当前循环的nums[i]以及下标i放入map中,以便后续查

Level3 — PART 3 — 自然语言处理与文本分析

目录 自然语言处理概要 分词与词性标注 N-Gram 分词 分词及词性标注的难点 法则式分词法 全切分 FMM和BMM Bi-direction MM 优缺点 统计式分词法 N-Gram概率模型 HMM概率模型 词性标注(Part-of-Speech Tagging) HMM 文本挖掘概要 信息检索(Information Retrieval) 全文扫描 关键词

力扣第347题 前K个高频元素

前言 记录一下刷题历程 力扣第347题 前K个高频元素 前K个高频元素 原题目: 分析 我们首先使用哈希表来统计数字出现的频率,然后我们使用一个桶排序。我们首先定义一个长度为n+1的数组,对于下图这个示例就是长度为7的数组。为什么需要一个长度为n+1的数组呢?假如说总共有三个数字都为1,那么我们需要把这个1放在数组下标为3的位置,假如说数组长度为n,对于这个例子就是长度为3,那么它的

5.1声道转化为左右声道

5.1声道转化为左右声道downmix http://szfzafa.blog.163.com/blog/static/11895416720120724729214/ 标题: Downmix 5.1ch to 2ch in AVS   最简单: function Dmix6Stereo(clip a) {  # 6 Channels L,R,C,LFE,SL,SR   f

【数据结构与算法 | 灵神题单 | 删除链表篇】力扣3217, 82, 237

总结,删除链表节点问题使用到列表,哈希表,递归比较容易超时,我觉得使用计数排序比较稳,处理起来也不是很难。 1. 力扣3217:从链表中移除在数组中的节点 1.1 题目: 给你一个整数数组 nums 和一个链表的头节点 head。从链表中移除所有存在于 nums 中的节点后,返回修改后的链表的头节点。 示例 1: 输入: nums = [1,2,3], head = [1,2,3,

超越IP-Adapter!阿里提出UniPortrait,可通过文本定制生成高保真的单人或多人图像。

阿里提出UniPortrait,能根据用户提供的文本描述,快速生成既忠实于原图又能灵活调整的个性化人像,用户甚至可以通过简单的句子来描述多个不同的人物,而不需要一一指定每个人的位置。这种设计大大简化了用户的操作,提升了个性化生成的效率和效果。 UniPortrait以统一的方式定制单 ID 和多 ID 图像,提供高保真身份保存、广泛的面部可编辑性、自由格式的文本描述,并且无需预先确定的布局。

力扣 739. 每日温度【经典单调栈题目】

1. 题目 理解题意: 1.1. 给一个温度集合, 要返回一个对应长度的结果集合, 这个结果集合里面的元素 i 是 当前 i 位置的元素的下一个更高温度的元素的位置和当前 i 位置的距离之差, 若是当前元素不存在下一个更高温度的元素, 则这个位置用0代替; 2. 思路 本题用单调栈来求解;单调栈就适用于来求当前元素左边或者右边第一个比当前元素大或者小的元素;【单调栈:让栈中的元素保持单调

力扣接雨水

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 示例 2: 输入:height

自定义结构体的对齐问题

一、跨平台通用数据类型 之前的一篇博客Linux数据类型(通用移植),已经自定义尝试解决了数据通用类型问题。 这里通过源码进行分析,利用源码进行解决问题。在<stdint.h>中我们发现: typedef signed char int8_t;typedef unsigned char uint8_t;typedef short int16_t;typedef unsigned s

使用亚马逊Bedrock的Stable Diffusion XL模型实现文本到图像生成:探索AI的无限创意

引言 什么是Amazon Bedrock? Amazon Bedrock是亚马逊云服务(AWS)推出的一项旗舰服务,旨在推动生成式人工智能(AI)在各行业的广泛应用。它的核心功能是提供由顶尖AI公司(如AI21 Labs、Anthropic、Cohere、Meta、Mistral AI、Stability AI以及亚马逊自身)开发的多种基础模型(Foundation Models,简称FMs)。