输入:"L__R__R", "L______RR" 输出:false 但在本地调试,输出是 true ,是代码哪里出错了吗?
bool canChange(string start, string target) {
//长度一定要相同
if (start.size() != target.size())
return false;
int num = start.size();
int i, j = 0;
while (i < num && j < num)
{
while (i < num && start[i] == '_')
i++;
while (j < num && target[j] == '_')
j++;
// L 和 R 的排序一定要相同
if (start[i] != target[j])
return false;
// R 只能往右移,所以下标一定要小,才能往右移( i + x = j )
if (start[i] == 'R' && i > j)
return false;
// L 只能往左移,所以下标一定要大,才能往左移( i - x = j )
if (start[i] == 'L' && i < j)
return false;
i++;
j++;
}
while (i < num)
{
if (start[i++] != '_')
return false;
}
while (j < num)
{
if (target[j++] != '_')
return false;
}
return true;
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.