​LeetCode解法汇总2337. 移动片段得到字符串

news/2024/4/17 10:41:42

目录链接:

力扣编程题-解法汇总_分享+记录-CSDN博客

GitHub同步刷题项目:

https://github.com/September26/java-algorithms

原题链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台


描述:

给你两个字符串 start 和 target ,长度均为 n 。每个字符串  由字符 'L''R' 和 '_' 组成,其中:

  • 字符 'L' 和 'R' 表示片段,其中片段 'L' 只有在其左侧直接存在一个 空位 时才能向  移动,而片段 'R' 只有在其右侧直接存在一个 空位 时才能向  移动。
  • 字符 '_' 表示可以被 任意 'L' 或 'R' 片段占据的空位。

如果在移动字符串 start 中的片段任意次之后可以得到字符串 target ,返回 true ;否则,返回 false 。

示例 1:

输入:start = "_L__R__R_", target = "L______RR"
输出:true
解释:可以从字符串 start 获得 target ,需要进行下面的移动:
- 将第一个片段向左移动一步,字符串现在变为 "L___R__R_" 。
- 将最后一个片段向右移动一步,字符串现在变为 "L___R___R" 。
- 将第二个片段向右移动散步,字符串现在变为 "L______RR" 。
可以从字符串 start 得到 target ,所以返回 true 。

示例 2:

输入:start = "R_L_", target = "__LR"
输出:false
解释:字符串 start 中的 'R' 片段可以向右移动一步得到 "_RL_" 。
但是,在这一步之后,不存在可以移动的片段,所以无法从字符串 start 得到 target 。

示例 3:

输入:start = "_R", target = "R_"
输出:false
解释:字符串 start 中的片段只能向右移动,所以无法从字符串 start 得到 target 。

提示:

  • n == start.length == target.length
  • 1 <= n <= 105
  • start 和 target 由字符 'L''R' 和 '_' 组成

解题思路:

* 解题思路:

* 找到字符串,每个位置上的字符按照下面的规则来判断即可。

* 1.顺序一样

* 2.L左侧空格的数目,start要大于target

* 3.R右侧空格的数组,target要大于start

代码:

class Solution2337
{
public:vector<pair<char, int>> makePiarList(string s){vector<pair<char, int>> v;int blankNum = 0;int index = 0;while (index < s.length()){if (s[index] == '_'){blankNum++;}else if (s[index] == 'L'){v.push_back(make_pair('L', blankNum));}else{v.push_back(make_pair('R', blankNum));}index++;}return v;}bool canChange(string start, string target){vector<pair<char, int>> startList = makePiarList(start);vector<pair<char, int>> targetList = makePiarList(target);if (startList.size() != targetList.size()){return false;}if (startList.size() == 0){return true;}// start中总的空格数量int startBlankSum = startList[startList.size() - 1].second;// target中总的空格数量int targetBlankSum = startList[startList.size() - 1].second;for (int i = 0; i < startList.size(); i++){// 顺序应该一致if (startList[i].first != targetList[i].first){return false;}if (startList[i].first == 'L'){if (startList[i].second < targetList[i].second){return false;}continue;}if (startList[i].first == 'R'){if (startBlankSum - startList[i].second < targetBlankSum - targetList[i].second){return false;}continue;}}return true;}
};


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

相关文章

Apple电脑使用技巧

defaults write com.apple.Dock autohide-delay -float e && killall Dock

Nacos源码 (4) 配置中心

本文阅读nacos-2.0.2的config源码&#xff0c;编写示例&#xff0c;分析推送配置、监听配置的原理。 返回目录 客户端 创建NacosConfigService对象 Properties properties new Properties(); properties.setProperty(PropertyKeyConst.SERVER_ADDR, NACOS_HOST); NacosConfi…

论文学习——A Proposal For Foley Sound Synthesis Challenge(如何开发出一个完整的FoleySound系统)

文章目录 引言正文AbstractIntroduction问题 2 Case Study&#xff1a;Research Challenges3 BackGrounds背景3.1 Previous Works on Foley Sound Synthesis重点&#xff01;&#xff01;之前关于伪声合成的相关研究问题 3.2 Existing Dataset现存数据集 4. FoleySound Synthes…

Mybatis踩坑日记------#{}和${} 报错 merge sql error, dbType mysql, druid-1.2.8

mybatis执行中,druid报错 merge sql error, dbType mysql, druid-1.2.8 如题 先上sql select * from aorder by #{orderByColumn} #{isAsc}再代码执行中会报错 解决办法 select * from aorder by #{orderByColumn} ${isAsc}原因 #{}采用预处理的方式,会出现 select * from…

Linux:HTTP协议

目录 一、HTTP和HTML 二、MIME 三、URI(i) 和 URL uri 四、HTTP工作机制 五、HTTP 协议版本 六、HTTP 请求访问的完整过程 七、静态网页与动态网页 一、HTTP和HTML HTTP&#xff1a;为解决"用什么样的网络协议来实现整个因特网上的万维网文档”这一难题&#xff0c;…

【jsthreeJS】入门three,并实现地月绕行,附带全码

效果图&#xff1a; 序幕准备&#xff1a; 需要自己准备地球跟月球的纹理贴图&#xff0c;如下&#xff1a; 图片格式转换网址&#xff0c;如下&#xff1a; Zamzar - File Conversion progress 开始编码&#xff1a; 实现步骤如下&#xff1a; 在JavaScript部分&#xff0c;…

无人机巡检输电线路是什么,怎么巡?

在今日科技迅速发展的时代&#xff0c;无人机为输电线路巡检提供了一种高效、安全且准确的解决方案。那么&#xff0c;为什么无人机巡检输电线路如此关键呢&#xff1f;以下是对这一问题的深入剖析。 1. 提高工作效率 传统的巡检模式与现实挑战&#xff1a;在过去&#xff0c;输…

Mendix Excel导入组件的分析和应用

一、前言 企业在发展的过程中会使用各种各样的系统&#xff0c;其中很多系统用了5-10年&#xff0c;我们称之为遗留系统存在诸多风险&#xff1a;维护耗时、中断频繁、用户不友好、与新软件的兼容性问题等。总有一天&#xff0c;这些庞大的问题会垄断IT资源&#xff0c;使数字…

ubuntu 20.04 安装 高版本cuda 11.7 和 cudnn最新版

一、安装显卡驱动 参考另一篇文章&#xff1a;Ubuntu20.04安装Nvidia显卡驱动教程_ytusdc的博客-CSDN博客 二、安装CUDA 英伟达官网&#xff08;最新版&#xff09;&#xff1a;CUDA Toolkit 12.2 Update 1 Downloads | NVIDIA Developer CUDA历史版本下载地址&#xff1a;C…

常用的图像校正方法

在数字图像处理中&#xff0c;常用的校正方法包括明场均匀性校正、查找表&#xff08;LUT&#xff09;校正和伽玛&#xff08;Gamma&#xff09;校正。这些校正方法分别针对不同的图像问题&#xff0c;可以改善图像质量&#xff0c;提升图像的可读性和可分析性。下面是这三种校…

js常用判断数据类型方法以及优缺点 以及 instanceof 原理实现

1.typeof操作符&#xff1a; 使用typeof操作符可以判断一个值的数据类型。它返回一个表示数据类型的字符串。 优点&#xff1a;typeof 操作符是一种简单、快速的方式来判断基本数据类型。它返回的结果是一个字符串&#xff0c;可以直接用于条件判断。缺点&#xff1a;对于引用…

Newsprk Newspaper新闻报纸WordPress主题

Newsprk Newspaper新闻报纸WordPress主题对于任何使用 WordPress 技术构建的新闻和杂志网站来说都是一个有吸引力且时尚的主题。Newsprk – 报纸 WordPress 主题非常适合任何新闻/杂志或与以下类别匹配的任何特定业务&#xff0c;如博客、体育、时尚、科学、足球、政治、视频、…

python项目在Linux系统中安装docker部署到linux系统中

1、python项目 test.py # 载入包 import uvicorn # from settings import * from fastapi import FastAPI from fastapi.responses import JSONResponseapp = FastAPI() @app.api_route(/test/{word},methods=[

AI+游戏线下沙龙活动暨COC上海城市开发者社区8月活动

引言 近年来&#xff0c;随着人工智能技术的不断发展和游戏开发技术的不断更新&#xff0c;越来越多的游戏公司开始将人工智能技术应用于游戏领域&#xff0c;以提高开发效率、降低成本&#xff0c;实现游戏玩家更好的游戏体验。为了探讨AI游戏的技术实践经验&#xff0c;近日在…

python:pyqt5 + cef 模仿 mdict 界面

PyQt5 安装参见&#xff1a;python&#xff1a;PyQt5 简单示例 cefpython 入门 参考: Python GUI: cefpython3的简单分析和应用 pip install cefpython3 cefpython3-66.1-py2.py3-none-win_amd64.whl (69.0 MB) Successfully installed cefpython3-66.1 cd \Python37\Lib\si…

多线程——学习笔记 1

目录 多线程的了解多线程并行和并发的区别Java程序运行原理多线程程序实现的方式1.继承Thread2.实现Runnable 多线程(实现Runnable的原理&#xff09;实现多线程两种方式的区别匿名内部类实现线程的两种方式获取线程名字和设置名字获取当前线程的对象——hread.currentThread()…

Laravel 模型的作用域 模型的访问器和修改器 ⑨

作者 : SYFStrive 博客首页 : HomePage &#x1f4dc;&#xff1a; THINK PHP &#x1f4cc;&#xff1a;个人社区&#xff08;欢迎大佬们加入&#xff09; &#x1f449;&#xff1a;社区链接&#x1f517; &#x1f4cc;&#xff1a;觉得文章不错可以点点关注 &#x1f44…

行为型(二) - 模板模式

一、概念 模板模式&#xff08;Template Pattern&#xff09;&#xff1a;模板方法模式在一个方法中定义一个算法骨架&#xff0c;并将某些步骤推迟到子类中实现。模板方法模式可以让子类在不改变算法整体结构的情况下&#xff0c;重新定义算法中的某些步骤。 二、实现 这里…

【Linux操作系统】深入探索Linux系统编程中的信号集操作函数

在Linux系统编程中&#xff0c;信号集操作函数是非常重要的工具&#xff0c;它们允许我们对信号进行管理和控制。本篇博客将详细介绍Linux系统编程中的信号集操作函数&#xff0c;包括信号集的创建、添加和删除信号&#xff0c;以及对信号集进行操作的常用函数。通过深入了解这…

Python学习日志(二)

数据类型转换 num_strstr(11)# 整数转换为字符串 print(type(num_str), num_str) 输出结果为&#xff1a; <class str> 11 类型转换成功&#xff0c;并且原本内容没有发生变化。 float_strstr(13.14)#小数转字符串 print(type(float_str),float_str) 同理&#xff0c;…
最新文章