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日

相关推荐

  • leetcode150-逆波兰表达式求值

    原题 根据逆波兰表示法,求表达式的值。 有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。 说明: 整数除法只保留整数部分。 给定逆波兰…

    2019年12月12日
    0110
  • leetcode238-除自身以外数组的乘积

    原题 给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积…

    算法 2020年6月4日
    0110
  • leetcode1103-分糖果II

    原题 排排坐,分糖果。 我们买了一些糖果 candies,打算把它们分给排好队的 n = num_people 个小朋友。 给第一个小朋友 1 颗糖果,第二个小朋友 2 颗,依此类…

    算法 2020年3月5日
    0140
  • leetcode274-H指数

    原题 https://leetcode.cn/problems/h-index/description 题解 核心是求数组中,大于等于h的数的个数 大于等于 h,个数的最大值。 核…

    算法 2024年3月18日
    0470
  • leetcode450-删除二叉搜索树中的节点

    原题 给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。 一…

    2020年1月16日
    0100
  • leetcode124-二叉树中的最大路径和

    原题 给定一个非空二叉树,返回其最大路径和。 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。 示例 1: 输入: [1…

    算法 2020年4月26日
    0170
  • leetcode96-不同的二叉搜索树

    原题 给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种? 示例: 输入: 3 输出: 5 解释: 给定 n = 3, 一共有 5 种不同结构的二叉搜索树: &…

    算法 2020年1月22日
    0120
  • leetcode209-长度最小的子数组

    原题 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。如果不存在符合条件的连续子数组,返回 0。 示例: 输入: s = …

    算法 2019年11月20日
    0170
  • leetcode169-多数元素

    原题 给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例1:…

    算法 2020年2月5日
    0100
  • leetcode456-132模式

    原题 给定一个整数序列:a1, a2, ..., an,一个132模式的子序列 ai, aj, ak 被定义为:当 i < j < k 时,ai < ak &lt…

    算法 2020年1月30日
    0160

发表回复

登录后才能评论