zoukankan      html  css  js  c++  java
  • 185. go字符串拼接(力扣 68. 文本左右对齐)

    package main
    
    import (
    	"strings"
    )
    
    func blank(n int) string {
    	return strings.Repeat(" ", n)
    }
    
    // 关于官网这种代码结构是在很让人失望, 所有处理都在同一个函数中很不好
    
    func fullJustify(words []string, maxWidth int) (ans []string) {
    	right, n := 0, len(words)
    	for {
    		left := right // 记录一行的其实索引
    		sumLen := 0
    
    		// 循环判断当前right可以到哪里
    		for right < n && sumLen+len(words[right])+right-left <= maxWidth {
    			sumLen += len(words[right])
    			right++
    		}
    
    		// 如果是最后一行的话需要特殊处理
    		if right == n {
    			s := strings.Join(words[left:], " ")
    			ans = append(ans, s+blank(maxWidth-len(s)))
    			return
    		}
    
    		// 单词数量和空格数量
    		numWords := right - left
    		numSpace := maxWidth - sumLen
    		// 当前行只有一个单词与
    		if numWords == 1 {
    			ans = append(ans, words[left]+blank(numSpace))
    			continue
    		}
    
    		// 当前行单词>1
    		avgSpace := numSpace / (numWords - 1)
    		extraSpace := numSpace % (numWords - 1)
    		s1 := strings.Join(words[left:left+extraSpace+1], blank(avgSpace+1))
    		s2 := strings.Join(words[left+extraSpace+1:right], blank(avgSpace))
    		ans = append(ans, s1+blank(avgSpace+1)+s2)
    	}
    }
    
    
  • 相关阅读:
    快速收录方法
    .NET学习网址大全,不得不上,国内外经典网站
    首篇文章测试。
    DropDownList的用法
    SqlServer初级学习笔记
    GDI编程开发
    C#继承细谈
    web开发的一些小零碎知识点(一)
    Js实现全选和批量删除
    IEnumberable和IEnumberator理解
  • 原文地址:https://www.cnblogs.com/liuzhanghao/p/15250489.html
Copyright © 2011-2022 走看看