777. 在LR字符串中交换相邻字符

在一个由 ‘L’ , ‘R’ 和 ‘X’ 三个字符组成的字符串(例如"RXXLRXRXL")中进行移动操作。一次移动操作指用一个"LX"替换一个"XL",或者用一个"XR"替换一个"RX"。现给定起始字符串start和结束字符串end,请编写代码,当且仅当存在一系列移动操作使得start可以转换成end时, 返回True。

示例 :

输入: start = “RXXLRXRXL”, end = “XRLXXRRLX”
输出: True
解释:
我们可以通过以下几步将start转换成end:
RXXLRXRXL ->
XRXLRXRXL ->
XRLXRXRXL ->
XRLXXRRXL ->
XRLXXRRLX

解题代码如下:

void swap(char *s,int i1,int i2){char p=s[i1];s[i1]=s[i2];s[i2]=p;
}int find_R(char *s){int i=0;while(s[i]!='\0'){if(s[i]=='X'){i++;}if(s[i]!='X'){if(s[i]=='R'){return i;}return -1;}}return -1;
}int find_X(char *s){int i=0;while(s[i]!='\0'){if(s[i]=='L'){i++;}if(s[i]!='L'){if(s[i]=='X'){return i;}return -1;}}return -1;
}bool canTransform(char * start, char * end){int s=0,e=0,i=0;int sx=0;while(start[s]!='\0'){// printf("--%s %s  ",start,end);if(start[s]=='R'){if(end[e]=='R'){s++;e++;}else{if(end[e]!='X'){return false;}int i=find_R(end+e+1);if(i==-1)return false;swap(end,e,e+i+1);}}if(start[s]=='X'){if(end[s]=='X'){s++;e++;}else{if(end[e]!='L'){return false;}int i=find_X(end+e+1);if(i==-1)return false;swap(end,e,e+i+1);}}if(start[s]=='L'){if(end[e]=='L'){e++;s++;}else{return false;}}}printf("%s %s",start,end);return true;;
}

777. 在LR字符串中交换相邻字符相关推荐

  1. Java实现 LeetCode 777 在LR字符串中交换相邻字符(分析题)

    777. 在LR字符串中交换相邻字符 在一个由 'L' , 'R' 和 'X' 三个字符组成的字符串(例如"RXXLRXRXL")中进行移动操作.一次移动操作指用一个"L ...

  2. 力扣 777. 在LR字符串中交换相邻字符

    题目来源:https://leetcode.cn/problems/swap-adjacent-in-lr-string/ 大致题意: 给两个由 L.R.X 组成的字符串 start 和 end,其中 ...

  3. LeetCode 777. 在LR字符串中交换相邻字符(双指针)

    1. 题目 在一个由 'L' , 'R' 和 'X' 三个字符组成的字符串(例如"RXXLRXRXL")中进行移动操作.一次移动操作指用一个"LX"替换一个&q ...

  4. leetcode 777. Swap Adjacent in LR String | 777. 在LR字符串中交换相邻字符(双指针)

    题目 https://leetcode.com/problems/swap-adjacent-in-lr-string/ 题解 本来以为是个带 visited 集合的 DFS,一看数据量,居然是 10 ...

  5. php 替换某个字符,php中如何替换字符串中的某个字符-PHP问题

    正在PHP中,能够应用strtr()函数完成字符串交换. 起首咱们简略理解下strtr()函数的界说及语法. 语法: string strtr( string $str, string $from, ...

  6. 把一个字符串中的所有字符按从小到大排序。

    7-4 把一个字符串中的所有字符按从小到大排序 输入格式: 在一行中输入长度小于20的字符串.在字符串中不要出现换行符,制表符. 输出格式: 直接输出排序后的字符串. 输入样例: asdfg 输出样例 ...

  7. python中替换字符串中字符_python替换字符串中的某个字符

    python_split_strip_replace使用方法 使用python时会经常要对字符串做一些处理,比如:分割字符串.去掉空格.替换字符串 中的某个字符等,下面介绍下这几个功能的使用. 一.  ...

  8. python删除指定位置的字符串_python去除区域 python删除字符串中指定位置字符

    python删除字符串中指定位置字符 原程序是这样的: ser = serial.Serial("/dev/ttyAMA0", 9600) def main字符串的话,你可以把他当 ...

  9. python使用正则表达式删除字符串中的其它字符只保留数字和字母

    python使用正则表达式删除字符串中的其它字符只保留数字和字母 #python使用正则表达式删除字符串中的其它字符只保留数字和字母 # Python code to demonstrate # to ...

最新文章

  1. wireshark 如何修改抓包时间日期显示格式?
  2. 地理信息系统(GIS)
  3. Python实现二叉树的非递归先序遍历
  4. mysql keepalived双主双活_mysql高可用架构方案之中的一个(keepalived+主主双活)
  5. vlookup match_INDEX-MATCH — VLOOKUP功能的升级
  6. Linux下使用od查看文件
  7. 鸿蒙构架谁提供的,科普丨关于“鸿蒙”,不知道这些你都不好意思跟别人打招呼!...
  8. 带你看论文丨全局信息对于图网络文档解析的影响
  9. 【转】onAttachedToWindow()在整个Activity生命周期的位置及使用
  10. Java循环结构语句
  11. SPEI干旱指数和ETo潜在蒸散量计算在python上的实现
  12. Java基础案例教程_Java基础案例教程答案
  13. 会计专业计算机技能大赛,会计技能大赛策划
  14. windows10下安装Vue.js的方法
  15. Java 算法:带权图Weighted Graph
  16. PIPI1091 编程课奖励(滚动数组+dp)
  17. 解决$ is not defined 的几种方法
  18. span标签的使用场景
  19. 格局决定结局,九种职场高效思维你都有吗
  20. Leetcode1091_二进制矩阵中的最短路径(Java+BFS解法)

热门文章

  1. C语言简单直观打印二叉树
  2. Oracle 错误总结及问题解决 ORA
  3. 一句平静而感人的英文电影对白
  4. springboot+uniapp实现简单注册登录
  5. 【ThreeJs】(2)照相机 | 正交投影照相机 | 透视投影照相机
  6. RFC2617- HTTP Authentication自译本-(3) (转)
  7. html转换pdf java_java转pdf(html转为pdf)
  8. 遇见狂神书说:JavaWeb保姆级教程
  9. 计算机编程背那个英语词汇,编程英语词汇
  10. Linux服务器/VPS 基本测试 包括硬盘速度/网络速度