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)
    	}
    }
    
    
  • 相关阅读:
    VS2015 update3 安装 asp.net core 失败
    connection timeout 和command timeout
    安装.NET Core
    xamarin 学习笔记02- IOS Simulator for windows 安装
    xamarin 学习笔记01-环境配置
    BotFramework学习-02
    BotFramework学习-01
    正则表达式
    获取指定字节长度的字符串
    pdf生成器
  • 原文地址:https://www.cnblogs.com/liuzhanghao/p/15250489.html
Copyright © 2011-2022 走看看