【教3妹学算法】字符串轮转
2022-09-29 本文已影响0人
程序员小2

3妹:2哥,今天周日,出去玩一玩,爬爬山怎么样。
2哥:还出去玩呢,现在全国疫情又反复了, 前段时间上海疫情刚控制住,现在宿州泗县和无锡疫情又爆发了,还是注意一些,不要随便出去走动了。
3妹:哦,是哦,普通公民能做的就是尽量居家,不能防疫添麻烦。
2哥:对,还是在家打会儿游戏吧,来,带你打野。
3妹:切,我对打游戏没兴趣,我还是做几道题,然后看我的韩剧吧

题目:
字符串轮转。给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)。
示例1:
输入:s1 = "waterbottle", s2 = "erbottlewat"
输出:True
示例2:
输入:s1 = "aa", s2 = "aba"
输出:False
提示:
字符串长度在[0, 100000]范围内。
说明:
你能只调用一次检查子串的方法吗?
java代码:
class Solution {
public boolean isFlipedString(String s1, String s2) {
int m = s1.length(), n = s2.length();
if (m != n) {
return false;
}
if (n == 0) {
return true;
}
for (int i = 0; i < n; i++) {
boolean flag = true;
for (int j = 0; j < n; j++) {
if (s1.charAt((i + j) % n) != s2.charAt(j)) {
flag = false;
break;
}
}
if (flag) {
return true;
}
}
return false;
}
}