2023-08-21力扣每日一题

链接:

2337. 移动片段得到字符串

题意:

L可以和左边的_交换,R可以和右边的_交换,求判断A是否能通过交换(不限次数)变成B

解:

观察可知,如果存在RL,一定不能交换出LR,所以按序遍历A和B时,除去_,遍历到的字符需要相同

除外,判断A的L位置是否大于等于B的L(A的L通过左移变成B的L),A的R位置是否小于等于B的R即可

双指针解题

实际代码:

#include
using namespace std;
bool canChange(string start, string target)
{
    int index=0,mb=0,lg=start.size();
    while(true)
    {
        while(mb=index)
                {
                    mb++;index++;
                }
                else return false;
            }
            else
            {
                if(mb<=index)
                {
                    mb++;index++;
                }
                else return false;
            }
        }
    }
    return true;
}
int main()
{
    string start,target;cin>>start>>target;
    bool ans=canChange(start,target);
    cout<

限制:

  • n == start.length == target.length
  • 1 <= n <= 105
  • starttarget 由字符 'L''R''_' 组成

你可能感兴趣的:(力扣每日一题,leetcode,算法,职场和发展)