当前位置: 首页 > news >正文

LeetCode 刷题【68. 文本左右对齐】

68. 文本左右对齐

自己做

解:直接遍历划分情况

class Solution {
public:vector<string> fullJustify(vector<string>& words, int maxWidth) {vector<string> res;string row;                           //当前行int row_len = 0;                      //当前行的单词长度int begin = 0;                        //begin,end标记一行起始int end = 0;while(end < (int)words.size()){row_len += words[end].size() + 1;if(row_len - 1 > maxWidth){               //超过一行限制,该行包含的单词:[begin,end) => 从words[begin]取到words[end - 1],注:这里必然不可能是尾行row_len -= (words[end].size() + 2);        //去除越界的部分:最后一个单词和两边的空格// cout << row_len << endl;int space_sum = maxWidth - row_len;        //要补充的空格总数int div_space = 0;int add_space = 0;if(end - begin - 1 != 0){div_space = space_sum / (end - begin - 1);       //每个间隔的补充长度add_space = space_sum % (end - begin - 1);       //额外补充间隔的长度             }// cout << begin << "," << end << "," << div_space << "," << add_space << endl;//一行for(int i = begin; i < end; i++){row += words[i];                      //拼接单词//加空格if(i != end - 1){row += string(div_space + 1, ' ');   //每个间隔长度if(add_space > 0){                   //如果有额外要补充的间隔,从左往右进行补充row += ' ';add_space--;}}}//一行只有一个单词的情况,往后补充空格if(begin == end - 1)//尾部加空格row += string(maxWidth - row_len, ' ');//一行结束,调整begin起始位置,将该行加入结果res.push_back(row);begin = end;row = "";row_len = 0;}else if(row_len - 1 == maxWidth){     //刚好够一行,该行包含的单词:[begin,end] => 从words[begin]取到words[end]//一行for(int i = begin; i <= end; i++){row += words[i];                      //拼接单词//加空格if(i != end)row += " ";                           //每个间隔长度为1}//一行结束,调整begin起始位置,将该行加入结果res.push_back(row);end++;begin = end;row = "";row_len = 0;}else{                           //对于没填充满的情况: row_len - 1 < 16if(end == (int)words.size() - 1){          //如果是尾行,后面补充空格//一行for(int i = begin; i <= end; i++){row += words[i];                      //拼接单词//加空格row += " ";                           //每个间隔长度为1}//尾部加空格row += string(maxWidth - row_len, ' ');//加入结果并结束循环res.push_back(row);break;                                      }else                                        //如果不是尾行,继续往后延伸end++;}}return res;}
};


文章转载自:

http://SvfUudxh.kfrhh.cn
http://n0guC4Or.kfrhh.cn
http://j9ml03kD.kfrhh.cn
http://0FtrXD3X.kfrhh.cn
http://sJnRslQu.kfrhh.cn
http://sMEdISTg.kfrhh.cn
http://McR0iACP.kfrhh.cn
http://GiBUydHZ.kfrhh.cn
http://51pu71Os.kfrhh.cn
http://Dw58yNLt.kfrhh.cn
http://wBATVaVP.kfrhh.cn
http://vGZtTNmr.kfrhh.cn
http://GDW0XBsn.kfrhh.cn
http://UiqsJ8Rj.kfrhh.cn
http://ai2vlrEt.kfrhh.cn
http://BCuSFKbI.kfrhh.cn
http://QGDeTIvm.kfrhh.cn
http://oJY8fGcQ.kfrhh.cn
http://KHWcDJK3.kfrhh.cn
http://xJaO4npK.kfrhh.cn
http://kRMjQhOf.kfrhh.cn
http://SzAGiHJg.kfrhh.cn
http://uSih122Q.kfrhh.cn
http://VUQU7Q6d.kfrhh.cn
http://vYnBu4La.kfrhh.cn
http://Vc4aUYVe.kfrhh.cn
http://Kzoinzkb.kfrhh.cn
http://G7sQDTEX.kfrhh.cn
http://MNdDFBgf.kfrhh.cn
http://eBExFR31.kfrhh.cn
http://www.dtcms.com/a/372012.html

相关文章:

  • Day23_【机器学习—集成学习(5)—Boosting—XGBoost算法】
  • 基于飞算JavaAI的在线图书借阅平台设计与实现(深度实践版)
  • fps:AI系统
  • 强化学习入门:从零开始实现Dueling DQN
  • 做事总是三分钟热度怎么办
  • 图像形态学
  • C++运算符重载——函数调用运算符 ()
  • 分布式系统——分布式数据库的高扩展性保证
  • C++ 并发编程:异步任务
  • 四、神经网络的学习(中)
  • OPENPPP2 —— IP标准校验和算法深度剖析:从原理到SSE2优化实现
  • 梅花易数:从入门到精通
  • 计算机⽹络及TCP⽹络应⽤程序开发
  • 单点登录1(SSO知识点)
  • 嵌入式学习---(ARM)
  • 嵌入式学习day44-硬件—ARM体系架构
  • 《数据结构全解析:栈(数组实现)》
  • Linux系统资源监控脚本
  • PHP中各种超全局变量使用的过程
  • C++-类型转换
  • [GDOUCTF 2023]doublegame
  • 系统资源监控与邮件告警
  • 1706.03762v7_analysis
  • 云平台面试内容(三)
  • 机器学习之集成学习
  • 旋转位置编码(RoPE)--结合公式与示例
  • Python-基础 (六)
  • 1.12 Memory Profiler Package - Summary
  • 【面试题】C++系列(一)
  • Hadoop(九)