leetcode 每日一题 68. 文本左右对齐

Posted nil_f

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode 每日一题 68. 文本左右对齐相关的知识,希望对你有一定的参考价值。

一维转二维再转一维

思路:

先根据最大长度条件把一维数组转换为二维数组,二维数组中的每个数组是结果中每个字符串包含的所有单词。再对二维数组中每个数组进行加空格处理,这里要注意的是,要对最后一行单独处理。

代码:

class Solution:
    def fullJustify(self, words: List[str], maxWidth: int) -> List[str]:
        res = []
        temp = []
        path = []
        curWidth = 0
        for word in words:
            curwlen = len(word)
            if curWidth + curwlen +len(path) <= maxWidth:
                curWidth += curwlen
                path.append(word)
            else:
                temp.append(path[:])
                path.clear()
                curWidth = curwlen
                path.append(word)
        for wds in temp:
            wStr = self.jointWordToStr(wds,maxWidth)
            res.append(wStr)
        lastStr = path[0]
        for i in range(1,len(path)):
            lastStr = lastStr + \' \' + path[i]
        lastStr = lastStr + \' \'*(maxWidth-len(\'\'.join(path))-len(path)+1)
        res.append(lastStr)
        return res
    def jointWordToStr(self,words,maxWidth):
        listlen = len(words)
        if listlen == 1:
            return words[0]+ \' \'*(maxWidth-len(words[0]))
        allAlp = 0 
        for i in range(listlen):
            allAlp += len(words[i])
        avespace = (maxWidth - allAlp)//(listlen-1)
        exspace = (maxWidth - allAlp)-avespace*(listlen-1)
        wStr = words[0]
        for i in range(exspace):
            wStr = wStr + \' \'*(avespace+1)+words[i+1]
        for i in range(exspace,listlen-1):
            wStr = wStr + \' \'*avespace + words[i+1]
        return wStr

 

以上是关于leetcode 每日一题 68. 文本左右对齐的主要内容,如果未能解决你的问题,请参考以下文章

《LeetCode之每日一题》:68.盛最多水的容器

leetcode每日一题--相邻元素对问题(哈希表遍历问题)

Leetcode 68.文本左右对齐

Leetcode No.68 文本左右对齐(模拟)

Leetcode No.68 文本左右对齐(模拟)

LeetCode 68 文本左右对齐[贪心] HERODING的LeetCode之路