我失业了,背着300多万房贷,老婆直接选择“净身出户”离婚,存款几乎归零。。。
算法题:左右文本对齐
words,和一个最大宽度 maxWidth,让你把文本进行左右对齐,每行长度必须等于 maxWidth,单词之间尽可能平均分配空格,多出来的空格从左边开始分。1. 如果不是最后一行,就要均匀分配空格;
2. 如果是最后一行,或者该行只有一个单词,就左对齐,末尾补空格。
public List<String> fullJustify(String[] words, int maxWidth) {List<String> result = new ArrayList<>();int index = 0;while (index < words.length) {int totalChars = words[index].length();int last = index + 1;// 贪心装单词while (last < words.length) {if (totalChars + 1 + words[last].length() > maxWidth) break;totalChars += 1 + words[last].length();last++;}StringBuilder builder = new StringBuilder();int numWords = last - index;int numSpaces = maxWidth - totalChars + (numWords - 1);// 是最后一行 or 这一行只有一个单词if (last == words.length || numWords == 1) {for (int i = index; i < last; i++) {builder.append(words[i]);if (i != last - 1) builder.append(" ");}int remaining = maxWidth - builder.length();while (remaining-- > 0) builder.append(" ");} else {int spaceBetween = numSpaces / (numWords - 1);int extraSpaces = numSpaces % (numWords - 1);for (int i = index; i < last; i++) {builder.append(words[i]);if (i != last - 1) {int spacesToApply = spaceBetween + (extraSpaces-- > 0 ? 1 : 0);for (int j = 0; j < spacesToApply; j++) builder.append(" ");}}}result.add(builder.toString());index = last;}return result;}
maxWidth 范围内操作,最多补补空格罢了。最后,我为大家打造了一份deepseek的入门到精通教程,完全免费:https://www.songshuhezi.com/deepseek
也可以看我写的这篇文章《DeepSeek满血复活,直接起飞!》来进行本地搭建。
-END-
以上,就是今天的分享了,看完文章记得右下角点赞,也欢迎在评论区写下你的留言。