• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

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

武飞扬头像
寒泉Hq
帮助1

题目

https://leetcode.com/problems/swap-adjacent-in-lr-string/
学新通

题解

本来以为是个带 visited 集合的 DFS,一看数据量,居然是 10^4。

然后看了下 hint,Think of the L and R's as people on a horizontal line, where X is a space. The people can't cross each other, and also you can't go from XRX to RXX.,一想,有点像状态机嘛。

详见草稿:
学新通

class Solution {
    public boolean canTransform(String start, String end) {
        int i = 0;
        int j = 0;
        while (true) {
            while (i < start.length() && start.charAt(i) == 'X') i  ;
            while (j < end.length() && end.charAt(j) == 'X') j  ;

            if (i == start.length() && j == end.length()) return true;
            if (i == start.length() || j == end.length()) return false;

            if (i < start.length() && j < end.length() && start.charAt(i) == end.charAt(j)) { // 两字母相同
                if (start.charAt(i) == 'L') { // 均为L
                    if (i < j) return false;
                } else { // 均为R
                    if (j < i) return false;
                }
                i  ;
                j  ;
            } else { // 两字母不同
                return false;
            }
        }
    }
}
学新通

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgfcicc
系列文章
更多 icon
同类精品
更多 icon
继续加载