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日

相关推荐

  • leetcode102-二叉树的层次遍历

    原题 给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。 例如:给定二叉树: [3,9,20,null,null,15,7],  &nbsp…

    算法 2020年1月11日
    0120
  • leetcode349-两个数组的交集

    原题 给定两个数组,编写一个函数来计算它们的交集。 输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2] 示例2: 输入: nums1 = [4…

    算法 2019年12月14日
    090
  • leetcode232-用栈实现队列

    原题 使用栈实现队列的下列操作: push(x) – 将一个元素放入队列的尾部。 pop() – 从队列首部移除元素。 peek() – 返回队列首部的元素。 empty() – …

    算法 2019年12月13日
    0560
  • leetcode189-旋转数组

    原题 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 示例1: 输入: [1,2,3,4,5,6,7] 和 k = 3 输出: [5,6,7,1,2,3,4…

    算法 2019年11月22日
    050
  • leetcode994-腐烂的橘子

    原题 在给定的网格中,每个单元格可以有以下三个值之一: 值 0 代表空单元格;值 1 代表新鲜橘子;值 2 代表腐烂的橘子。每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜…

    2020年3月4日
    0100
  • leetcode1144-递减元素使数组呈锯齿状

    原题 给你一个整数数组 nums,每次 操作 会从中选择一个元素并 将该元素的值减少 1。 如果符合下列情况之一,则数组 A 就是 锯齿数组: 每个偶数索引对应的元素都大于相邻的元…

    算法 2020年6月5日
    050
  • 'leetcode50-Pow(x,n)'

    原题 实现 pow(x, n) ,即计算 x 的 n 次幂函数。 示例1: 输入: 2.00000, 10 输出: 1024.00000 示例2: 输入: 2.10000, 3 输…

    算法 2020年1月5日
    0190
  • leetcode32-最长有效括号

    原题 给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。 示例 1: 输入: "(()" 输出: 2 解释: 最长有效括号子串为 "()" 示例 2…

    算法 2020年6月12日
    0160
  • leetcode11-盛最多水的容器

    原题 给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i,…

    2020年2月27日
    0250
  • leetcode135-分发糖果

    原题 老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。 你需要按照以下要求,帮助老师给这些孩子分发糖果: 每个孩子至少分配到 1 个…

    算法 2020年2月17日
    060

发表回复

登录后才能评论