2337. 移动片段得到字符串

news2024/9/29 5:31:48

给你两个字符串 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' 和 '_' 组成

题解:

 

code:

class Solution {
    public boolean canChange(String start, String target) {
        int n = start.length();
        int i = 0, j = 0;
        while (i < n && j < n) {
            while (i < n && start.charAt(i) == '_') {
                i++;
            }
            while (j < n && target.charAt(j) == '_') {
                j++;
            }
            if (i < n && j < n) {
                if (start.charAt(i) != target.charAt(j)) {
                    return false;
                }
                char c = start.charAt(i);
                if ((c == 'L' && i < j) || (c == 'R' && i > j)) {
                    return false;
                }
                i++;
                j++;
            }
        }
        while (i < n) {
            if (start.charAt(i) != '_') {
                return false;
            }
            i++;
        }
        while (j < n) {
            if (target.charAt(j) != '_') {
                return false;
            }
            j++;
        }
        return true;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/906492.html

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

相关文章

Linux内核学习(四)—— 系统调用(基于Linux 2.6内核)

在现代操作系统中&#xff0c;内核提供了用户进程与内核进行交互的一组接口&#xff0c;这些接口在应用程序和内核之间扮演了使者的角色。这些接口保证了系统的稳定可靠&#xff0c;避免应用程序肆意妄行。 一、与内核通信 系统调用在用户空间进程和硬件设备之间添加了一个中…

阿里云——云存储:对象存储管理与安全

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​ 目录 一.传统存储介绍&#xff1a; 1.存储的发展历史 2.硬盘发展历史与趋势 3.SDD硬盘介…

谷歌浏览器最新版本进行控制台调试js代码时候无法显示代码行数

问题描述 谷歌浏览器打开控制台进行js代码调试&#xff0c;js代码没有行数显示想当难受 原因分析&#xff1a; 最新版本谷歌浏览器进行了自动设置关闭那个功能&#xff0c;要自己去设置 解决方案&#xff1a; 最终效果 舒服了

用C++/JS/Python/Java代码描述秋天的味道

前言 秋天是一个充满诗意和浪漫的季节&#xff0c;它带来了清新、芬芳和美食的味道。让我们一起探索如何用编程语言来写出秋天味道的代码吧&#xff01;无论是C、JavaScript、Python还是Java&#xff0c;以下是几个简单的步骤来帮助你创造出充满秋天味道的代码&#xff1a; …

ChatGPT的创造力已达到人类顶尖水平-蒙大拿大学研究

美国蒙大拿大学的一项新研究表明&#xff0c;ChatGPT的创造力已经达到了前1%的人类思想家水平。研究人员对ChatGPT进行了托兰斯创造力思维测验&#xff08;TTCT&#xff0c; Torrance Tests of Creative Thinking&#xff09;&#xff0c;并记录了8个回答。此外&#xff0c;他们…

C++破坏电脑病毒

写了这么多python病毒&#xff0c;今天我来给大家分享一个C病毒。 创作背景&#xff1a;我有个同学对电脑十分精通&#xff0c;而且对MBR十分感兴趣&#xff0c;他跟我分享了他怎么把MBR搞报废的历程。听完之后&#xff0c;我开始研究MBR。用python研究了2个月&#xff0c;结果…

Apache和Nginx各有什么优缺点,应该如何选择?

Apache和Nginx各有什么优缺点&#xff0c;应该如何选择&#xff1f; Apache和Nginx都有各自的优点和缺点&#xff0c;选择应该根据您的具体需求而定。Nginx的优点包括&#xff1a;轻量级&#xff0c;与同等web服务相比&#xff0c;Nginx占用更少的内存和资源&#xff1b;抗并发…

面试热题(不同的二分搜索树)

给你一个整数 n &#xff0c;求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种&#xff1f;返回满足题意的二叉搜索树的种数。 经典的面试题&#xff0c;这部分涉及了组合数学中的卡特兰数&#xff0c;如果对其不清楚的同学可以去看我以前的博客卡特兰数 …

stack,queue,deque的使用

1.stack是后进先出的&#xff0c;这也影响其对应的接口&#xff0c;所能实现的功能也有限&#xff0c;其中主要的功能如下&#xff1a; void test_stack1() {stack<int> st;st.push(1);st.push(2);st.push(3);st.push(4);st.push(5);st.push(6);while (!st.empty()){c…

代码随想录打卡—day24—【回溯】— 基础,最新820 8.21 todo

1 理论基础 回溯法也可以叫做回溯搜索法&#xff0c;它是一种搜索的方式。回溯算法——回溯和递归是相辅相成的。回溯法的效率&#xff0c;回溯法其实就是暴力查找&#xff0c;并不是什么高效的算法。回溯法解决的问题都可以抽象为树形结构&#xff08;N叉树&#xff09; 1.1…

Linux面试笔试题(1)

1、以长格式列目录时&#xff0c;若文件test的权限描述为&#xff1a;drwxrw-r–&#xff0c;则文件test的类型及文件主的权限是__A____。 A.目录文件、读写执行 B.目录文件、读写 C.普通文件、读写 D.普通文件、读 在这个问题中&#xff0c;我们需要解析文件权限的描述&…

【记录】Python3|selenium4 极速上手入门(Windows)

环境&#xff1a;Windows 版本&#xff1a;python3&#xff0c;selenium 4.11.2 文章目录 1 装ChromeEdge其他浏览器 2 运行报错RequestsDependencyWarning: urllib3 (1.26.9) or chardet (3.0.4) doesn‘t match a supported version打开了浏览器&#xff0c;但是没有显示网页…

李沐pytorch学习-经典CNN的原理及代码实现

一、LeNet 1.1 模型结构 LeNet结构如图1所示&#xff0c;汇聚层即池化层&#xff0c;这里池化Stride&#xff08;步幅&#xff09;与池化层长宽一致&#xff0c;因此使得池化后大小减半。 图1. LeNet结构 1.2 代码实现 代码实现如下&#xff1a; import torch from torch imp…

KDAB QML学习笔记Day3(5,6,7,8)

KDAB QML学习笔记Day3&#xff08;5,6,7,8&#xff09; 学习视频链接&#xff1a;Introduction to Qt / QML - all videos so far - YouTube B站链接&#xff1a;Introduction to Qt / QML_哔哩哔哩_bilibili Part05&#xff0c;06 示例代码 import QtQuick 2.15 import Q…

根据源码,模拟实现 RabbitMQ - 虚拟主机设计(5)

目录 一、虚拟主机设计 1.1、需求分析 1.1.1、核心 API 1.1.2、虚拟主机的是用来干什么的&#xff1f; 1.1.3、如何表示 交换机和虚拟主机 之间的从属关系&#xff1f; 二、实现 VirtualHost 类 2.1、属性 2.2、锁对象 2.3、公开实例 2.4、虚拟主机构造方法 2.5、交…

Ubuntu系统更换Linux内核的详细方法汇总

文章目录 一、写在前面二、方法一&#xff08;手动下载编译安装Linux内核并更换&#xff09;三、方法二&#xff08;自动下载安装Linux内核并更换&#xff09;四、最后总结 一、写在前面 最近在复现Linux内核漏洞的时候&#xff0c;经常需要更换Ubuntu系统的Linux内核版本&…

索引下推及具体实践

什么是索引下推 索引下推(Index Condition Pushdown&#xff0c;简称ICP)&#xff0c;是MySQL5.6版本的新特性&#xff0c;它能减少回表查询次数&#xff0c;提高查询效率。 索引下推优化的原理 我们先简单了解一下MySQL大概的架构&#xff1a; MySQL服务层负责SQL语法解析…

Spring 中 @Primary 注解的原理是什么?

1. 问题分析 当我们使用 Spring 的时候&#xff0c;有时候会遇到下面这种情况。 假设我有 A、B 两个类&#xff0c;在 A 中注入 B&#xff0c;如下&#xff1a; Component public class A {AutowiredB b; }至于 B&#xff0c;则在配置类中存在多个实例&#xff1a; Configu…

windows上先简单使用libevent,运行demo

使用libevent 1:获取libevent库。 从libevent 官网中获取&#xff0c;这里获取到的版本是libevent-2.1.12-stable.tar 2:windows上编译libevent库&#xff08;VS2019上使用&#xff09; 2.1&#xff1a;cmake准备 注&#xff1a;这里要用cmake进行编译&#xff0c;除此之外…

变动的Python爬虫实现

在电商时代&#xff0c;了解商品价格的变动对于购物者和卖家来说都非常重要。本文将分享一种基于Python的实时监控电商平台商品价格变动的爬虫实现方法。通过本文的解决方案和代码示例&#xff0c;您将能够轻松监控商品价格&#xff0c;并及时做出决策。 一、了解需求和目标 在…