• Leetcode#68 Text Justification


    原题地址

    没有复杂的算法,纯粹的模拟题

    先试探,计算出一行能放几个单词

    然后计算出单词之间有几个空格,注意,如果空格总长度无法整除空格数,前面的空格长度通通+1

    最后放单词、放空格,组成一行,加入结果中

    对于最后一行要特殊处理

    代码:

     1 vector<string> fullJustify(vector<string> &words, int L) {
     2   vector<string> text;
     3   int n = words.size();
     4 
     5   int i = 0;
     6   int j = 0;
     7 
     8   while ((i = j) < n) {
     9     int wordsLen = 0;
    10     // 试探
    11     while (j < n && wordsLen + words[j].length() + j - i <= L) {
    12       wordsLen += words[j].length();
    13       j++;
    14     }
    15     // 特殊处理最后一行
    16     if (j == n) {
    17       string line = words[i];
    18       for (int k = i + 1; k < j; k++)
    19         line += " " + words[k];
    20       line += string(L - wordsLen - (j - i - 1), ' ');
    21       text.push_back(line);
    22       break;
    23     }
    24 
    25     if (j == i + 1) // 只有一个单词的行也单独处理,避免除0
    26       text.push_back(words[j - 1] + string(L - words[j - 1].length(), ' '));
    27     else { // 普通情况
    28       int padLen = (L - wordsLen) / (j - i - 1);
    29       int remainNum = L - wordsLen - padLen * (j - i - 1);
    30       string line = words[i];
    31       for (int k = i + 1; k < j; k++) {
    32         string pad(padLen, ' ');
    33         if (remainNum > 0) {
    34           pad += " ";
    35           remainNum--;
    36         }
    37         line += pad + words[k];
    38       }
    39       text.push_back(line);
    40     }
    41   }
    42 
    43   return text;
    44 }
  • 相关阅读:
    python基本数据类型
    大学排名之数据库练习
    Python turtle学习笔记
    初学爬虫
    用python进行对乒乓球的比赛分析,并且将该程序进行封装
    新网页
    Python pandas
    十大经典排序算法
    C++的split()函数
    C++多态意义探究
  • 原文地址:https://www.cnblogs.com/boring09/p/4243875.html
Copyright © 2020-2023  润新知