请用C++实现如果一个字符串是另一个字符串通过若干次移位产生的字串的子串,则输出YES,否则输出NO 输入样例: AABCD CDAA 输出样例: YES 输入样例: ABCD CDAA 输出样例: NO
时间: 2024-04-09 21:32:43 浏览: 145
您好!以下是使用 C++ 实现的代码:
```cpp
#include <iostream>
#include <string>
bool isSubstring(const std::string& s1, const std::string& s2) {
// 检查 s2 是否为 s1 的子串
return s1.find(s2) != std::string::npos;
}
bool isRotatedSubstring(const std::string& s1, const std::string& s2) {
if (s1.length() != s2.length()) {
return false;
}
std::string concatenated = s1 + s1; // 将 s1 连接自身
return isSubstring(concatenated, s2);
}
int main() {
std::string s1, s2;
std::cout << "请输入两个字符串:" << std::endl;
std::cin >> s1 >> s2;
if (isRotatedSubstring(s1, s2)) {
std::cout << "YES" << std::endl;
} else {
std::cout << "NO" << std::endl;
}
return 0;
}
```
这段代码中,我们定义了两个函数 `isSubstring` 和 `isRotatedSubstring`。`isSubstring` 函数用于判断字符串 `s2` 是否为字符串 `s1` 的子串,使用了 `std::string` 类中的 `find` 函数实现。`isRotatedSubstring` 函数则通过将字符串 `s1` 连接自身,再判断是否存在子串 `s2` 来判断是否为通过移位产生的子串。最后在 `main` 函数中获取用户输入的两个字符串,并调用 `isRotatedSubstring` 进行判断输出结果。
希望对您有所帮助!如有任何疑问,请随时提问。
阅读全文