给两个字符串 S1 和 S2 ,判断 S2 中是否有 S1 的排列 如果是返回 true ,否则返回 false 。 s1 的排列指的是 s1 字符的不同排列 格式 输入格式: 第一行输入字符串 s1 第二行输入字符串 S2 输出格式: 输出小写的 true 或 false 样例 1 输入: ab eidbaooo 输出:true 用c++里面的字符串匹配实现
时间: 2024-04-09 09:28:58 浏览: 149
Java实现 LeetCode 567 字符串的排列(滑动窗口,处理区间内的字符数量)
下面是使用C++实现字符串匹配解决该问题的代码:
```cpp
#include <iostream>
#include <string>
#include <vector>
using namespace std;
bool checkInclusion(string s1, string s2) {
int len1 = s1.length();
int len2 = s2.length();
if (len1 > len2) {
return false;
}
vector<int> count1(26, 0);
vector<int> count2(26, 0);
for (int i = 0; i < len1; i++) {
count1[s1[i] - 'a']++;
count2[s2[i] - 'a']++;
}
for (int i = len1; i < len2; i++) {
if (count1 == count2) {
return true;
}
count2[s2[i] - 'a']++;
count2[s2[i - len1] - 'a']--;
}
return count1 == count2;
}
int main() {
string s1, s2;
cin >> s1 >> s2;
bool result = checkInclusion(s1, s2);
cout << (result ? "true" : "false") << endl;
return 0;
}
```
希望这个C++代码对你有帮助!如果你还有其他问题,请随时提问。
阅读全文