本文共 799 字,大约阅读时间需要 2 分钟。
要判断两个字符串A是否可以通过若干次左移操作变成B,左移操作是指将字符串的左边第一个字符移到最后一位。我们可以通过以下方法来解决这个问题:
我们可以将字符串A重复两次,形成一个新的字符串A+A。这样,任何左移后的字符串都可以在A+A中找到。例如,左移i次后的字符串是A[i] + A[i+1] + ... + A[n-1] + A[0] + A[1] + ... + A[i-1]。如果B是A的某个左移版本,那么B将在A+A中出现。
具体步骤如下:
这种方法的时间复杂度是O(n),其中n是字符串的长度,因为连接字符串和查找子串操作的时间复杂度都是O(n)。
#includeusing namespace std;class Solution {public: bool rotateString(string A, string B) { if (A.size() != B.size()) { return false; } string concatenated = A + A; return concatenated.find(B) != string::npos; }};
这种方法简洁高效,能够在较短时间内解决问题。
转载地址:http://phqfk.baihongyu.com/