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日

相关推荐

  • leetcode402-移掉K位数字

    原题 给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小。 注意: num 的长度小于 10002 且 ≥ k。 num 不会包含任何前导零。 …

    算法 2020年1月29日
    0100
  • leetcode200-岛屿数量

    原题 给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水…

    算法 2019年11月24日
    0150
  • leetcode887-鸡蛋掉落

    原题 你将获得 K 个鸡蛋,并可以使用一栋从 1 到 N 共有 N 层楼的建筑。 每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去。 你知道存在楼层 F ,满足 0 &…

    算法 2020年4月11日
    0120
  • leetcode658-找到K个最接近的元素

    原题 给定一个排序好的数组,两个整数 k 和 x,从数组中找到最靠近 x(两数之差最小)的 k 个数。返回的结果必须要是按升序排好的。如果有两个数与 x 的差值一样,优先选择数值较…

    算法 2020年1月4日
    0120
  • leetcode70-爬楼梯

    原题 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意: 给定 n 是一个正整数。  示例 1: 输入:…

    算法 2020年1月21日
    0990
  • leetcode239-滑动窗口最大值

    原题 给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回滑动窗口中的最…

    算法 2020年4月21日
    0180
  • leetcode33-搜索旋转排序数组

    原题 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 搜索一个给定的目标值,…

    算法 2020年1月1日
    0160
  • leetcode704-二分查找

    原题 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 示…

    算法 2019年12月29日
    080
  • leetcode34--在排序数组中查找元素的第一个和最后一个位置

    原题 给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 你的算法时间复杂度必须是 O(log n) 级别。 如果数…

    算法 2020年1月3日
    0170
  • leetcode103-二叉树的锯齿形层次遍历

    原题 给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。 例如:给定二叉树: [3,9,20,null,nul…

    算法 2020年1月25日
    060

发表回复

登录后才能评论