1. 题目

给你一个字符串 s。请你按照单词在 s 中的出现顺序将它们全部竖直返回。
单词应该以字符串列表的形式返回,必要时用空格补位,但输出尾部的空格需要删除(不允许尾随空格)。
每个单词只能放在一列上,每一列中也只能有一个单词。

示例 1:
输入:s = "HOW ARE YOU"
输出:["HAY","ORO","WEU"]
解释:每个单词都应该竖直打印。 "HAY""ORO""WEU"示例 2:
输入:s = "TO BE OR NOT TO BE"
输出:["TBONTB","OEROOE","   T"]
解释:题目允许使用空格补位,但不允许输出末尾出现空格。
"TBONTB"
"OEROOE"
"   T"示例 3:
输入:s = "CONTEST IS COMING"
输出:["CIC","OSO","N M","T I","E N","S G","T"]提示:
1 <= s.length <= 200
s 仅含大写英文字母。
题目数据保证两个单词之间只有一个空格。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/print-words-vertically
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 先把单词的末尾加个空格,方便找到字符串中每个单词的起始位置
  • 对每个单词的起始位置处的字符拼起来,遇到空格的下标置为-1,否则+1
  • 生成的字符串,删除结尾的空格,若为空,结束查找
class Solution {public:vector<string> printVertically(string s) {vector<int> idx;s.push_back(' ');int i, n = s.size();char prev = ' ';for(i = 0; i < n; ++i){if(prev==' ' && s[i] != ' ')idx.push_back(i);//每个单词起点prev = s[i];}vector<string> ans;string str;while(1){str = "";for(i = 0; i < idx.size(); ++i){if(idx[i] != -1)//下标不为-1{str += s[idx[i]++];//拼接字符,下标+1if(s[idx[i]] == ' ')//+1后为空字符idx[i] = -1;//置为-1}elsestr += ' ';//为-1的话,补空格}while(!str.empty() && str.back()==' ')str.pop_back();//删除尾部空格if(str == "")break;//字符串空,说明,全部到达末尾,结束elseans.push_back(str);}return ans;}
};

0 ms 6.5 MB

LeetCode 1324. 竖直打印单词相关推荐

  1. Print Words Vertically(C++竖直打印单词)

    解题思路: (1)切分+填空 class Solution { public:vector<string> printVertically(string s) {vector<str ...

  2. ​LeetCode刷题实战314:二叉树的竖直遍历

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  3. 一、自定义一个竖直Layout

    垂直Layout 我们想到的第一直觉肯定是ViewGroup,自定义一个ViewGroup通常包含onMeasure(测量),onLayout(布局). onMeasure onMeasure是一个父 ...

  4. android 动画x轴旋转,Android Roate3dAnimation实现围绕y轴竖直方向或者绕x轴方向旋转的3d动画效果...

    概要: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Roate3dAnim ...

  5. R语言ggplot2可视化在特定数据点添加竖直的虚线实战:Add a dotted vertical line on certain x-axis values

    R语言ggplot2可视化在特定数据点添加竖直的虚线实战:Add a dotted vertical line on certain x-axis values 目录 R语言

  6. Python把matplotlib绘制的水平条形图(horizontal bar)转化为竖直的柱状图(vertical bar)实战

    Python把matplotlib绘制的水平条形图(horizontal bar)转化为竖直的柱状图(vertical bar)实战 目录

  7. 用OpenCV实现图像的水平镜像(翻转)变换和竖直镜像(翻转)变换(垂直镜像变换)的源码

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 直接上源码,本人是参考博文的源码OpenCV2: ...

  8. c#竖直射线法判断点是否再多边形里面

    一.开发环境: VS2017   C#winform 二.竖直射线法大致介绍 通过被判断的点P(x0,y0)引出竖直的上下两条射线,如果两条射线与多变形的交点都为奇数个,那么这个点再多边形里面,反之, ...

  9. 【opencv】26.图像水平边缘和竖直边缘的算子数学分析

    这里我们要细分了,虽然GxG_xGx​是对x求偏导得到,但是它反映的是在x方向上的三个像素值差异很大,那么假设黑色图像中一条白色竖线(有10行1列),那么卷积后: 在白色竖线以外左边相邻的那一列,他的 ...

最新文章

  1. Dispatch_queue
  2. linux设备驱动——总线、设备、驱动
  3. 【HDOJ】1196 Lowest Bit
  4. delphi中,idftp怎样查找ftp服务器的是否存在一个文件,delphi – IDFTP DirExists和MakeDir...
  5. maven使用OracleDB jdbc Driver
  6. 【转】Tomcat+MyEclipse
  7. C# 8 新特性 - 只读struct成员
  8. RocksDB 写入流程详解
  9. 19:Remove Nth Node From End of List【两指针】【链表】
  10. POJ 3670 Eating Together
  11. c语言设计底层,【学习小总结】C语言的底层开发
  12. 导入文件按钮_如何将PPT软件功能配置导入另一台电脑
  13. php7扩展安装奇葩事
  14. 理解Servlet及其对象
  15. 计算机机房监理细则,弱电机房工程施工监理的四大重点
  16. SPSS个案处理插件v1.0 用SPSS构造Bootstrap样本
  17. 一文读懂UWB技术的应用场景
  18. 微信公众号开发 糟糕的体验_糟糕的开发人员–好老板
  19. 使用SQL语句创建并管理数据表
  20. catia中的螺旋伞齿轮画法_用catia画齿轮教程

热门文章

  1. 机器学习之支持向量机(SVM)总结
  2. Linux中的crontab详解
  3. 数据链路层:ARP协议详解(绝对经典)
  4. linux内核源码目录结构(2.6.35.7版本)
  5. java台球游戏设计原理_Java实现简单台球游戏
  6. 使用docker部署mysql主从复制集群
  7. HighCharts解析之xAxis——x轴的样式
  8. 嵌入式系统Linux内核开发工程师必须掌握的三十道题
  9. 嵌入式软件开发注意事项一
  10. 如何让linux服务器同步互联网时间