力扣(LeetCode)418. 屏幕可显示句子的数量(2023.02.20)

news/2024/12/5 0:08:26/

给你一个 rows x cols 的屏幕和一个用 非空 的单词列表组成的句子,请你计算出给定句子可以在屏幕上完整显示的次数。

注意:

一个单词不能拆分成两行。
单词在句子中的顺序必须保持不变。
在一行中 的两个连续单词必须用一个空格符分隔。
句子中的单词总量不会超过 100。
每个单词的长度大于 0 且不会超过 10。
1 ≤ rows, cols ≤ 20,000.

示例 1:

输入:
rows = 2, cols = 8, 句子 sentence = [“hello”, “world”]
输出:
1
解释:
hello—
world—
字符 ‘-’ 表示屏幕上的一个空白位置。

示例 2:

输入:
rows = 3, cols = 6, 句子 sentence = [“a”, “bcd”, “e”]
输出:
2
解释:
a-bcd-
e-a—
bcd-e-
字符 ‘-’ 表示屏幕上的一个空白位置。

示例 3:

输入:
rows = 4, cols = 5, 句子 sentence = [“I”, “had”, “apple”, “pie”]
输出:
1
解释:
I-had
apple
pie-I
had–
字符 ‘-’ 表示屏幕上的一个空白位置。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/sentence-screen-fitting

方法一:动态规划

C++提交内容:

class Solution {
public:int wordsTyping(vector<string>& sentence, int rows, int cols) {int ans = 0;int len = 0;int num = sentence.size();vector<int> lens;for(string& s:sentence){len+=s.length();lens.emplace_back(len);}len+=num-1;if(cols>=len){ans += cols/(len+1)*rows;cols = cols%(len+1);if(cols==len){ans+=rows;return ans;}   }vector<int> dp(num);for(int j = 0;j<num;j++){int curr = j;int len = 0;while(len+sentence[curr].length()<=cols){len+=sentence[curr].length()+1;curr = (curr+1)%num;}dp[j] = curr;}int k = 0;for(int i =0;i<rows;i++){if(dp[k]<k){ans++;}k = dp[k];}return ans;}
};

http://www.ppmy.cn/news/26733.html

相关文章

预告|2月25日 第四届OpenI/O 启智开发者大会昇腾人工智能应用专场邀您共启数字未来!

如今&#xff0c;人工智能早已脱离科幻小说中的虚构想象&#xff0c;成为可触及的现实&#xff0c;并渗透到我们的生活。随着人工智能的发展&#xff0c;我们正在迎来一个全新的时代——数智化时代。数据、信息和知识是这个时代的核心资源&#xff0c;而人工智能则是这些资源的…

react源码中的协调与调度

requestEventTime 其实在React执行过程中&#xff0c;会有数不清的任务要去执行&#xff0c;但是他们会有一个优先级的判定&#xff0c;假如两个事件的优先级一样&#xff0c;那么React是怎么去判定他们两谁先执行呢&#xff1f; // packages/react-reconciler/src/ReactFibe…

边玩边学,13个 Python 小游戏真有趣啊(含源码)

经常听到有朋友说&#xff0c;学习编程是一件非常枯燥无味的事情。其实&#xff0c;大家有没有认真想过&#xff0c;可能是我们的学习方法不对&#xff1f; 比方说&#xff0c;你有没有想过&#xff0c;可以通过打游戏来学编程&#xff1f; 今天我想跟大家分享几个Python小游…

Linux 学习指南

Linux 学习指南 文章目录Linux 学习指南前言一、在线教程1.1鸟哥的 Linux 私房菜1.2Linux 工具快速教程1.3快乐的 Linux 命令行1.4Linux 教程 | 菜鸟教程1.5Linux 教程 | W3Cschool二、社区网站2.1Linux 中国2.2Linux 公社2.3Linux Today2.4ChinaUnix2.5Linux 运维部落三、在线…

python filtermapreducezip

一、filter 过滤 filter 过滤&#xff0c; 从可迭代对象中&#xff0c;筛选出满足条件的元素&#xff0c;再将这些满足条件的元素&#xff0c;组成一个新的可迭代对象。 方式一&#xff1a;filter(过滤方法&#xff0c;可迭代对象&#xff09; 举例&#xff1a;将一个list中…

FPGA 20个例程篇:20.USB2.0/RS232/LAN控制并行DAC输出任意频率正弦波、梯形波、三角波、方波(一)

在最后一个例程中笔者精挑细选了一个较为综合性的项目实战&#xff0c;其中覆盖了很多知识点&#xff0c;也是从一个转产产品中所提炼出来的&#xff0c;所以非常贴近实战项目。 整个工程实现了用户通过对上位机PC端人机界面的操作&#xff0c;即可达到控制豌豆开发并行DAC输出…

基于springboot+vue的校园社团管理系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

华为OD机试 - 最差产品奖 | 机试题算法思路 【2023】

最近更新的博客 华为OD机试 - 简易压缩算法(Python) | 机试题算法思路 【2023】 华为OD机试题 - 获取最大软件版本号(JavaScript) 华为OD机试 - 猜字谜(Python) | 机试题+算法思路 【2023】 华为OD机试 - 删除指定目录(Python) | 机试题算法思路 【2023】 华为OD机试 …