网站建设佰金手指科杰十三,互站网站源码,东莞市传送机技术支持 网站建设,辽宁省建设信息网官网2023-08-21每日一题
一、题目编号
2337. 移动片段得到字符串二、题目链接
点击跳转到题目位置
三、题目描述
给你两个字符串 start 和 target #xff0c;长度均为 n 。每个字符串 仅 由字符 ‘L’、‘R’ 和 ‘_’ 组成#xff0c;其中#xff1a;
字符 ‘L’ 和 ‘R…2023-08-21每日一题
一、题目编号
2337. 移动片段得到字符串二、题目链接
点击跳转到题目位置
三、题目描述
给你两个字符串 start 和 target 长度均为 n 。每个字符串 仅 由字符 ‘L’、‘R’ 和 ‘_’ 组成其中
字符 ‘L’ 和 ‘R’ 表示片段其中片段 ‘L’ 只有在其左侧直接存在一个 空位 时才能向 左 移动而片段 ‘R’ 只有在其右侧直接存在一个 空位 时才能向 右 移动。字符 ‘_’ 表示可以被 任意 ‘L’ 或 ‘R’ 片段占据的空位。
如果在移动字符串 start 中的片段任意次之后可以得到字符串 target 返回 true 否则返回 false 。
示例 1
示例 2 示例 3 提示
n start.length target.length1 n 105start 和 target 由字符 ‘L’、‘R’ 和 ‘_’ 组成
四、解题代码
class Solution {
public:bool canChange(string start, string target) {int n start.size();int i 0;int j 0;while(i n j n){while(i n start[i] _){i;}while(j n target[j] _){j;}if(i n j n){if(start[i] ! target[j]){return false;} if(start[i] L i j){return false;}if(start[i] R i j){return false;}i;j;}}while(i n){if(start[i] ! _){return false;}i;}while(j n){if(target[j] ! _){return false;}j;}return true;}
};五、解题思路
(1) 我们是将start转化成target的所以target是不动的将start转化成target。
(2) 如果转化要成功必须确保start和target中的相应字符数目要相等。
(3) 我们跳过start和target中的‘_’字符如果此时start和target中遍历到的字符不相同那么代表不能转变如果同为’L’,那么start中的下标必须大于等于target中的下标不然不能移动。如果同为‘R’那么start中的下标必须小于等于target中的下标不然不能移动。
(4) 最后判断是否对应字符数目相等因为有可能一个字符串已经遍历到最后了另一个字符串还没有这个时候继续遍历没有遍历完的字符串如果还有其他的字符则表示错误。
(5) 如果上述条件全部满足了返回true即可。