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

news2024/7/1 8:40:06

目录链接:

力扣编程题-解法汇总_分享+记录-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.coloradmin.cn/o/911004.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RFID工业识别技术在智能仓储管理中的创新实践

随着信息技术的飞速发展&#xff0c;智能仓储管理已然成为现代物流行业的核心趋势。在这一变革的背景下&#xff0c;RFID工业识别技术崭露头角&#xff0c;为仓储管理注入了创新动力。本文将深入探讨RFID在智能仓库自动化、盘点与分拣中的应用&#xff0c;以及如何解决传统仓储…

你知道fastjson的反序列化漏洞吗?

面试回答 当我们使用 fastjson 进行序列化的时候&#xff0c;当一个类中包含了一个接口&#xff08;或抽象类&#xff09;的时候&#xff0c;会将子类型抹去&#xff0c;只保留&#xff08;抽象类&#xff09;的类型&#xff0c;使得反序列化时无法拿到原始类型。 那么为了解决…

Redis 5环境搭建

一、环境搭建 如果是Centos8&#xff0c;yum 仓库中默认的 Redis版本就是5&#xff0c;直接yum install即可。如果是Centos7&#xff0c;yum 仓库中默认的 Redis版本是3系列&#xff0c;比较老~ 为了我们能在 Centos7中下载到 Redis5 首先要安装额外的软件源 sudo yum insta…

5G与4G的RRC协议之异同

什么是无线资源控制&#xff08;RRC&#xff09;&#xff1f; 我们知道&#xff0c;在移动通信中&#xff0c;无线资源管理是非常重要的一个环节&#xff0c;首先介绍一下什么是无线资源控制&#xff08;RRC&#xff09;。 手机和网络通过无线信道相互通信&#xff0c;彼此交…

战略是设计和孕育出来的?跟孙子兵法很类似

战略设计派&#xff1a;战略是设计和孕育出来的【安志强趣讲264期】 设计派起源于西方1957年 很类似《孙子兵法》的观点 趣讲大白话&#xff1a;战略是谋划出来的 **************************** 设计派是战略管理最先出现的流派 到现在还有影响力 非常有名的SWOT是标志 SWOT现在…

Linux之libreoffice安装

一、libreoffice简介 LibreOffice 是一款开放源代码的自由免费全能办公软件&#xff0c;可运行于 Microsoft Windows, GNU/Linux 以及 macOS 等操作系统上。它包含了 Writer, Calc, Impress, Draw, Math 以及 Base 等组件&#xff0c;可分别用于文本文档、电子表格、幻灯片演示…

直播平台源码搭建协议讲解篇:传输控制协议TCP

简介&#xff1a; 由于直播平台在当今时代发展的越来越迅速&#xff0c;使得直播平台的技术功能越来越智能&#xff0c;让用户在直播平台中能够和其他用户进行实时互动&#xff0c;让用户可以获取到全世界最新的资讯&#xff0c;让一些用户可以作为主播获得工作&#xff0c;让…

第六章:红黑树

系列文章目录 文章目录 系列文章目录前言1、红黑树的介绍1. 红黑树的概念1.2 红黑树的性质 2、红黑树的节点的定义3、红黑树的插入&#xff08;看叔叔的颜色就行&#xff09;3.1 情况一&#xff1a;uncle存在且为红3.2 情况二&#xff1a;uncle不存在/存在且为黑&#xff08;直…

Django基础1——项目实现流程

文章目录 一、前提了解二、准备开发环境2.1 创建项目2.1.1 pycharm创建2.1.2 命令创建 2.2 创建应用 例1&#xff1a;效果实现例2&#xff1a;网页展示日志文件 一、前提了解 基本了解&#xff1a; 官网Django是Python的一个主流Web框架&#xff0c;提供一站式解决方案&#xf…

Android Studio中引入MagicIndicator

1.github中下载文件 GitHub - hackware1993/MagicIndicator: A powerful, customizable and extensible ViewPager indicator framework. As the best alternative of ViewPagerIndicator, TabLayout and PagerSlidingTabStrip —— 强大、可定制、易扩展的 ViewPager 指示器框…

计算机视觉入门 1)卷积分类器

目录 一、卷积分类器&#xff08;The Convolutional Classifer&#xff09;训练分类器 二、【代码示例】汽车卡车图片分类器步骤1. 导入数据步骤2 - 定义预训练模型步骤3 - 连接头部步骤4 - 训练模型 一、卷积分类器&#xff08;The Convolutional Classifer&#xff09; 卷积…

系统架构设计师之NoSQL数据库及其分类

系统架构设计师之NoSQL数据库及其分类

结构型(六) - 组合模式

一、概念 组合模式&#xff08;Composite Pattern&#xff09;&#xff1a;将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 使用场景&#xff1a;组合结构不常用&#xff0c;需要部分与整体的层次关系为树形结…

网络协议详解之STP

目录 一、STP协议&#xff08;生成树&#xff09; 1.1 生成树协议核心知识点&#xff1a; 1.2 生成树协议与导致问题&#xff1a; 生成树含义&#xff1a; 1.3 802.1D 规则&#xff1a; 802.1D 缺点&#xff1a; 1.4 PVST cisco私有 1.5 PVST 1.6 快速生成树 快速的原…

内网穿透软件给企业带来哪些改变?快解析怎么样?

随着科技的发达&#xff0c;使得信息交流变得非常重要。但是企业在使用互联网进行数据传输时面临着一些困境&#xff0c;比如企业内部的服务器无法直接与外部网络进行通信&#xff0c;导致无法远程访问企业内部资源。解决这一问题的有效方法是使用内网穿透软件。下面给大家详细…

组合总和-LeetCode

给你一个无重复元素的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的所有不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序返回这些组合。 candidates 中的同一个数字可以无限制重复被选取 。如果至少一个…

WSL2和本地windows端口互通

众所周知 WSL 默认安装后&#xff0c;只允许windows访问 Windows Subsystem for Linux&#xff0c;而WSL是不能反之访问本地windows。我之前用vmware的思路认为是nat的网络模式&#xff0c;于是改成了桥接&#xff0c;结果wsl的桥接模式被我改的能访问本地&#xff0c;但是却不…

猜数字小游戏python

---------------------------END--------------------------- 题外话 “不是只有程序员才要学编程&#xff1f;&#xff01;” 认真查了一下招聘网站&#xff0c;发现它其实早已变成一项全民的基本技能了。 连国企都纷纷要求大家学Python! 世界飞速发展&#xff0c;互联网…

【0基础入门Python Web笔记】二、python 之逻辑运算和制流程语句

二、python 之逻辑运算和制流程语句 逻辑运算控制流程语句条件语句&#xff08;if语句&#xff09;循环结构&#xff08;for循环、while循环&#xff09;continue、break和pass关键字控制流程语句的嵌套以及elif 更多实战项目可进入下方官网 逻辑运算 Python提供基本的逻辑运算…

【线程池】换个姿势来看线程池中不一样的阻塞队列(一)

前言 本文中无特别说明的话&#xff0c;线程池指的是 java.util.concurrent #ThreadPoolExecutor 本文只探讨线程池中阻塞队列相关&#xff0c;暂时不对线程池的其他方面进行说明&#xff0c;如果对线程池感兴趣的话&#xff0c;接下来几天我会多分享些和线程池相关的知识&…