原题
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/