leetcode68-文本左右对齐

原题

https://leetcode.cn/problems/text-justification/description

解法

贪心即可

func fullJustify(words []string, maxWidth int) []string {
    index := 0
    count := 0
    var temp []string
    var res []string
    for{
        temp = append(temp, words[index])
        count += len(words[index])
        // 如果已经是最后一个字符串了,直接结束
        if index + 1 == len(words){
            tempStr := strings.Join(temp, " ")
            for len(tempStr) != maxWidth{
                tempStr += " "
            }
            res = append(res, tempStr)
            return res
        }

        // 如果装不下下一个字符串了,则换行
        if count + len(words[index+1]) + len(temp) > maxWidth{
            // 有多少个空格
            spaces := maxWidth - (count)
            tempStr := ""
            if len(temp) == 1{
                tempStr = temp[0] + nSpace(spaces)
            } else{
                // 单词间平均多少个空格
                perSpace := spaces/(len(temp)-1)
                // 余多少个空格
                spareSpace := spaces%(len(temp)-1)

                for index, str := range temp{
                    tempStr += str
                    if index == len(temp) - 1{
                        continue
                    }
                    // 加空格
                    if index < spareSpace{
                        tempStr += nSpace(perSpace+1)
                    } else{
                        tempStr += nSpace(perSpace)
                    }
                }
            }
            res = append(res, tempStr)
            temp = []string{}
            count = 0
        }
        index ++
    }
}

func nSpace(n int) string{
    str := ""
    for i := 0; i < n; i++{
        str += " "
    }
    return str
}

原创文章,作者:彭晨涛,如若转载,请注明出处:https://www.codetool.top/article/leetcode68-%e6%96%87%e6%9c%ac%e5%b7%a6%e5%8f%b3%e5%af%b9%e9%bd%90/

(0)
彭晨涛彭晨涛管理者
上一篇 2024年3月23日
下一篇 2024年3月24日

相关推荐

  • leetcode47-全排列II

    原题 给定一个可包含重复数字的序列,返回所有不重复的全排列。 示例: 输入: [1,1,2] 输出: [ [1,1,2], [1,2,1], [2,1,1] ] 解法 思想 这道题…

    算法 2020年5月10日
    0100
  • leetcode80-删除排序数组中的重复项II

    原题 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外…

    算法 2020年5月26日
    0140
  • leetcode57-插入区间

    原题 给出一个无重叠的 ,按照区间起始端点排序的区间列表。 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。 示例 1: 输入: …

    算法 2020年5月12日
    0280
  • leetcode313-超级丑数

    原题 编写一段程序来查找第 n 个超级丑数。 超级丑数是指其所有质因数都是长度为 k 的质数列表 primes 中的正整数。 示例: 输入: n = 12, primes = [2…

    算法 2020年2月11日
    0110
  • leetcode820-单词的压缩编码

    原题 给定一个单词列表,我们将这个列表编码成一个索引字符串 S 与一个索引列表 A。 例如,如果这个列表是 ["time", "me", "bell"],我们就可以将其表示为 S …

    算法 2020年3月28日
    090
  • leetcode343-整数拆分

    原题 给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。 示例 1: 输入: 2 输出: 1 解释: 2 = 1 + 1, 1…

    算法 2020年4月13日
    0110
  • leetcode498-对角线遍历

    这是一个Z字形编排问题,JEPG的编码过程中也会用到。 原题 给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下…

    2019年11月14日
    0110
  • leetcode40-组合总和II

    原题 给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字…

    算法 2020年5月2日
    0730
  • leetcode1014-最佳观光组合

    原题 给定正整数数组 A,A[i] 表示第 i 个观光景点的评分,并且两个景点 i 和 j 之间的距离为 j - i。 一对景点(i < j)组成的观光组合的得分为(A[i]…

    算法 2020年6月17日
    01950
  • leetcode1114-按序打印

    原题 我们提供了一个类: public class Foo {   public void one() { print("one"); }   public void two() …

    算法 2020年2月1日
    0140

发表回复

登录后才能评论