旋转字符串
题目
题目分析
方法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; }
标签:include,goal,int,C++,旋转,力扣,循环,字符串,例题 From: https://www.cnblogs.com/hcrzhi/p/18231523