【每周例题】C++ 力扣 旋转字符串
旋转字符串
题目

题目分析
方法1:模拟字符串
1.采用双for循环去模拟字符串旋转,第一个for循环,模拟字符串循环位移;第二个for循环,进行逐个字符串检测
2.使用if进行判断是否符合要求
方法2:
假设我们将goal字符串拆分为2个字符串,将其命名为R、L,我们将会得到以下式子
gogal gogal =RLRL=RsL
代码
方法1
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s, goal;
cin >> s >> goal;
int m = s.size();
int n = goal.size();
// 首先检查两个字符串的长度是否相等
if (m != n)
{
cout << "false" << endl;
return 0;
}
// 遍历所有可能的循环移位
for (int i = 0; i < m; i++)
{
bool flag = true;
// 逐个字符比较
for (int j = 0; j < m; j++)
{
if (s[(i + j) % m] != goal[j])
{
flag = false;
break;
}
}
// 如果找到一个匹配的循环移位,则输出 "true" 并返回
if (flag)
{
cout << "true" << endl;
return 0;
}
}
// 如果没有找到匹配的循环移位,则输出 "false"
cout << "false" << endl;
return 0;
}
方法二
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s, goal;
cin >> s >> goal;
if (s.length() == goal.length() && (goal + goal).find(s) != -1)
{
cout << "true";
}
else
{
cout << "false";
}
return 0;
}

浙公网安备 33010602011771号