Leetcode:806. 写字符串需要的行数

2023-05-16

难度:easy

我们要把给定的字符串 S 从左到右写到每一行上,每一行的最大宽度为100个单位,如果我们在写某个字母的时候会使这行超过了100 个单位,那么我们应该把这个字母写到下一行。我们给定了一个数组 widths ,这个数组 widths[0] 代表 'a' 需要的单位, widths[1] 代表 'b' 需要的单位,..., widths[25] 代表 'z' 需要的单位。

现在回答两个问题:至少多少行能放下S,以及最后一行使用的宽度是多少个单位?将你的答案作为长度为2的整数列表返回。

 


示例 1:
输入: 
widths = [10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10]
S = "abcdefghijklmnopqrstuvwxyz"
输出: [3, 60]
解释: 
所有的字符拥有相同的占用单位10。所以书写所有的26个字母,
我们需要2个整行和占用60个单位的一行。
  

示例 2:
输入: 
widths = [4,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10]
S = "bbbcccdddaaa"
输出: [2, 4]
解释: 
除去字母'a'所有的字符都是相同的单位10,并且字符串 "bbbcccdddaa" 将会覆盖 9 * 10 + 2 * 4 = 98 个单位.
最后一个字母 'a' 将会被写到第二行,因为第一行只剩下2个单位了。
所以,这个答案是2行,第二行有4个单位宽度。  
class Solution {
public:
    vector<int> numberOfLines(vector<int>& widths, string s) {
        int width=0,sum=0,i=0,remain;
        while(s[i]!='\0')
        {
            sum+=widths[s[i]-'a'];
            if(sum>=100)
            {
                width++;
                if(sum==100)
                {
                    remain=100;
                }
                else sum=widths[s[i]-'a'];
            }
            i++;
        }
        remain=sum;
        return {width,sum};
    }
};

width代表行数,sum代表最后一行用的多少单位。while(s[i]!='\0)此循环的判断条件是为了将字符串s中的元素一一遍历

sum+=width[s[i]-'a'],s[i]-'a'是s[i]字母对应的下标(a-0,b-1...)以此来增加sum(也就是当前行的单位数)

当sum>=100时要进行换行此时有两种情况

1.sum==100 (说明当加上当前字母后单位刚好一百不用换行)

2.sum>100  (说明加上当前字母需要换行此时改行只能容纳上一个sum单位 当前字母放到下一行存放,此时调整sum=widths[s[i]-'a']   

而无论是情况一还是情况二width都需要加一

当跳出循环后需要判断最后一行的单位数,如果sum>0的花需要再用一行存放,

所以需要width++

最后结果返回{width,sum}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Leetcode:806. 写字符串需要的行数 的相关文章

  • CSS-Div居中方法(Position方法)

    目录 代码展示 xff1a 实际效果 xff1a 具体分析 xff1a 如何联系我 xff1f 代码展示 xff1a lt DOCTYPE html gt lt html lang 61 34 en 34 gt lt head gt lt
  • 字符设备驱动-linux驱动开发第3部分-朱有鹏-专题视频课程

    字符设备驱动 linux驱动开发第3部分 4561人已学习 课程介绍 本课程是linux驱动开发的第3个课程 xff0c 接上部分继续讲解字符设备驱动的开发要点 xff0c 重点是相关的内核源代码的解析和一些真正驱动惯用的编程手法的引入 本
  • C++测试代码运行时间

    如果我们想直观地看出朴素算法和其他算法对程序运行时间的影响 xff0c 那么就可以采取以下方式 方法1 xff1a 基于头文件ctime和函数clock 的实现 代码1 xff1a include lt iostream gt includ
  • VMware虚拟机安装CentOS 7

    目录 1 VMware软件安装 2 CentOS 7 镜像下载 3 VMware安装CentOS 1 安装前内容设置 xff1a 2 安装中操作步骤 3 安装后语言设置 4 将图形化界面切换为命令符界面 如何联系我 xff1f wei ha
  • 解决Windows开机后无启动项的问题

    前言 为什么会出现这个问题 xff1f 此前PC上装有Windows 43 Ubuntu双系统 xff0c 由于又配置了虚拟机下的Centos xff0c 我把Ubuntu系统卸载了 没想到手滑删除了Windows的引导项 如图所示 xff
  • KMP算法图文详解

    简介 xff1a Knuth Morris Pratt xff08 KMP算法or字符串查找算法 xff09 可在一较长串S内查找一子串P出现的位置 xff0c KMP算法利用最长公共前后缀的特性以避免重新检索先前配对的字符串 xff0c
  • 离散数学期末习题

    前言 xff1a 本文适用于应对HUEL离散数学 期末考试 xff0c 重点整理了HUEL离散数学 期末考试范围内的题型 xff0c 既可以应对HUEL离散数学期末考试 xff0c 亦可以作为数据结构与算法的预备知识 如何联系我 xff1f
  • VMware Tools在Centos 7环境的安装教程

    前言 xff1a 阅读本文 xff0c 您可以得到 xff1a VMware Tools在Centos7环境下的安装步骤 xff1b 正文 xff1a VMware Tools在Centos7环境下安装步骤 xff1b 1 您需要保持虚拟机
  • 宝塔面板快速部署SSL证书

    前言 xff1a 发现自己的网站不能使用https访问 xff0c 原来是没有为网站部署SSL证书 通过本文 xff0c 您可以一键免费部署SSL证书 xff08 Let 39 s Encrypt xff09 正文 xff1a 1 如图显示
  • 宝塔面板部署WordPress(保姆式教程)

    前言 xff1a 通过本篇文章 xff0c 您可以掌握 xff1a 1 基于宝塔面板的快速建站操作 xff1b 2 一些浅浅的建站知识与技能 xff1b 3 WordPress助您快速建站 xff0c 节省您的时间 xff1b 如何联系我
  • VS 2022 C++ 自定义头文件示例

    前言 xff1a 博主最近刚从VS Code转到VS 2022 xff0c 但发现自定义的方法和VS Code有些不同 xff0c 故出一期VS 2022自定义头文件的博客 xff0c 时间仓促 xff0c 请不吝赐教 如何联系我 xff1
  • 零基础搭建网站(保姆级教程)

    前言 xff1a 本教程不需要任何前置知识 xff0c 零基础教您搭建网站 如何联系我 xff1f wei haoran 64 outlook com 正文 xff1a 搭建网站需要什么 xff1f 1 域名 xff1b 2 服务器 xff
  • 驱动框架入门之LED-linux驱动开发第4部分-朱有鹏-专题视频课程

    驱动框架入门之LED linux驱动开发第4部分 5199人已学习 课程介绍 本课程是linux驱动开发的第4个课程 xff0c 主要内容是驱动框架的引入 通过led驱动框架和gpiolib的这两个框架的详细解释 xff0c 让大家学习内核
  • VSCode远程连接服务器(SSH免密登录)

    前文 连接远程服务器的方式众多 xff0c 本文将介绍基于VS Code的SSH免密登录方法 在开始SSH远程链接以前 xff0c 您需要完成以下步骤 xff1a 1 Windows配置SSH xff1a 1 以Windows平台为例 xf
  • Linux云服务器防止暴力破解(三道SSH安全策略)

    前言 新购入的服务器 xff0c 往往用户名默认为root xff0c ssh默认开放22端口 xff0c 且配置SSH服务时往往同时允许密码和公钥二重登录 然而 xff0c 许多非法服务器运行着暴力破解程序 xff0c 通过访问用户名ro
  • Git快速入门(图文教程)

    前言 xff1a Git是目前最流行的版本控制工具之一 xff0c 它可以帮助我们更好地管理代码 xff0c 协作开发 xff0c 以及保证代码的安全性 在学习Git之前 xff0c 我们需要先了解几个概念 xff1a workspace
  • VS Code + phpstudy实现PHP环境配置

    概述 xff1a 要使用VSCode进行PHP开发 xff0c 需要先在本地搭建PHP环境 xff0c 并将其配置到VSCode中 下面是具体的步骤 xff1a 1 下载安装PHPStudy 首先 xff0c 我们需要从PHPStudy官网
  • CSS圆角边框

    设置css圆角边框 1 border radius 属性用于向元素添加圆角边框 css圆角边框代码 xff1a border radius 15px 2 对应四个角 xff0c CSS3提供四个单独的属性 xff1a border top
  • CSS渐变色

    渐变 xff1a 通过渐变可以设置一些复杂的背景颜色 xff0c 可以从实现一个颜色向其他颜色过渡的效果 渐变是图片 xff0c 通过 background image设置 CSS 定义了两种渐变类型 xff1a 线性渐变 xff08 向下
  • js的for循环语句

    For循环语法 xff1a for 循环是在您希望创建循环时经常使用的工具 for 循环的语法如下 xff1a for 语句 1 语句 2 语句 3 要执行的代码块 语句 1 在循环 xff08 代码块 xff09 开始之前执行 语句 2

随机推荐

  • 了解 JavaScript 构造函数

    以下是Faraz Kelhini的客座文章 其中一些东西超出了我的舒适区 xff0c 所以我请凯尔辛普森为我进行技术检查 凯尔的回答 xff08 我们在办公时间会议期间所做的 xff09 非常有趣 它是 xff1a 1 xff09 这篇文章
  • JavaScript 字符串加密和解密

    使用CryptoJS 加密和解密 JavaScript 字符串 使用NcryptJS 加密和解密 JavaScript 字符串 使用CryptoJS 加密和解密 JavaScript 字符串 CryptoJS 是一个 JavaScript
  • DOM特效

    第一节 xff1a 模态框拖拽 1 offset 偏移量 offset 翻译过来就是偏移量 xff0c 我们使用 offset系列相关属性可以动态的得到该元素的位置 xff08 偏移 xff09 大小等 offset 可以得到任意样式表中的
  • linux设备驱动模型-linux驱动开发第5部分-朱有鹏-专题视频课程

    linux设备驱动模型 linux驱动开发第5部分 4285人已学习 课程介绍 本课程是linux驱动开发的第5个课程 xff0c 主要内容是linux的设备驱动模型 xff0c 包括总线 类 设备 驱动等概念 xff0c 重点通过plat
  • 工作两三年的人才能体会的软件设计思想

    最近看了几本关于编程的书籍 xff0c 都是些讲解软件架构和设计的书 根据目前脑袋中还残留的记忆 xff0c 相关知识总结如下 xff1a 1 编程范式 目前被提出来的编程范式为 xff1a 结构化编程范式 面向对象编程范式 函数式编程范式
  • es6 的箭头函数

    箭头函数是 ES6 里面一个简写函数的语法方式 重点 xff1a 箭头函数只能简写函数表达式 xff0c 不能简写声明式函数 function fn 不能简写 const fun 61 function 可以简写 const obj 61
  • 使用 JavaScript 绘制圆

    图形是任何 Web 应用程序的重要组成部分 HTML 提供了两种创建图形的方法 xff0c 第一种是 canvas xff0c 另一种是 SVG 在今天的帖子中 xff0c 我们将学习如何使用画布和 JavaScript 在 HTML 中创
  • 闭包和引用

    闭包是 JavaScript 一个非常重要的特性 xff0c 这意味着当前作用域总是能够访问外部作用域中的变量 因为 函数 是 JavaScript 中唯一拥有自身作用域的结构 xff0c 因此闭包的创建依赖于函数 模拟私有变量 span
  • 在 JavaScript 中隐藏表格行

    在 JavaScript 中 xff0c 我们可以在一个通用的类下定义某些表数据 xff0c 该类将具有一些可配合的功能 此特定函数将声明该表的行在选择性触发器上的行为方式 在 JavaScript 中 xff0c 我们可以在一个通用的 类
  • 在jQuery中切换隐藏/显示

    使用jQuery的toggle 方法来切换隐藏 显示 使用jQuery的切换 方法来切换隐藏 显示 在 toggle 方法的用例中 xff0c 我们通常通过 click 事件触发它 同样 xff0c 在该方法的实现中 xff0c 还有另一个
  • 在 JavaScript 中深度克隆对象

    JavaScript 是一种对象语言 几乎所有内容都是 JavaScript 中的对象 布尔值 数字 字符串 日期 数学 Regex 数组 函数和对象本身都是对象 它们是由各种属性和方法组成的键值对的集合 它们直接存储在内存中 xff0c
  • 九、FreeRTOS多任务创建的两种风格及任务启动流程

    文章目录 1 使用FreeRTOS进行多任务创建的时候一般有如下两种风格 xff08 1 xff09 先创建好所有的任务 xff0c 最后启动调度器开始多任务的调度 xff08 2 xff09 先创建一个启动任务后立马开启调度器 xff0c
  • 关于keil编译显示Flash Download failed -Could not load file xxxx.axf

    这个问题困扰我好久 xff0c 在许多地方看了许多大佬的讲解都没解决 xff0c 软件重装后又重装 xff0c 最终解决方法 xff1a xff01 xff01 xff01 xff01 xff01 xff01 xff01 xff01 你所下
  • 解决Ubuntu与Virtualbox虚拟机共享文件夹无权限的问题(保姆级)

    目录 使用这个命令后 xff0c 如果不能马上打开共享文件夹 xff0c 需要重启一下ubuntu系统 这样 xff0c 你共享的work文件夹就能在Ubuntu系统访问了 声明 CSDN 64 m0 637799558昵称更改为 64 孤
  • FRP内网穿透进行Windows远程访问

    背景 内网计算机 xff1a Windows 10 x64 FRP服务器 xff1a 腾讯云 Ubuntu 20 04 本文重点介绍 FRP 服务器端和客户端配置 xff0c 远程桌面连接属于常规内容 xff0c 不再详细说明 准备工作 下
  • misc类设备与蜂鸣器驱动-linux驱动开发第6部分-朱有鹏-专题视频课程

    misc类设备与蜂鸣器驱动 linux驱动开发第6部分 3069人已学习 课程介绍 本课程是linux驱动开发的第6个课程 xff0c 主要内容是linux的misc类设备驱动框架讲解 xff0c 及蜂鸣器驱动源码的分析 在前面2个课程的铺
  • PyQt5最全36 状态栏之QStatusBar创建和使用状态栏

    PyQt5最全36 状态栏之QStatusBar创建和使用状态栏 span class token keyword import span sys span class token keyword from span PyQt5 span
  • 在阿里云里怎么样可以连接阿里云数据库

    环境 xff1a 阿里云ubuntu服务器 阿里云RDS数据库 问题 xff1a 如何在阿里云服务器的终端使用shell命令连接RDS云数据库 解决方法 xff1a 1 阿里云服务器安装MySQL sudo apt get install
  • stm32——定时器输出比较之PWM波

    OC xff0c 既输出比较 xff0c 一个通用定时器或者高级定时器拥有四个输出比较单元 xff0c 分别连接到响应的CH输出GPIO口上 输出比较 xff0c 它是主要功能就是输出PWM波 xff0c 来输出一个可数字化调节的电平 PW
  • Leetcode:806. 写字符串需要的行数

    难度 xff1a easy 我们要把给定的字符串 S 从左到右写到每一行上 xff0c 每一行的最大宽度为100个单位 xff0c 如果我们在写某个字母的时候会使这行超过了100 个单位 xff0c 那么我们应该把这个字母写到下一行 我们给