小洋同学喜欢复读,比如说对于一个字符串 b,他会一直重复说 b 这句话。 现在请你判断 一个字符串 a是否由另一个字符串 b 复读而来,输出 YES 或者 NO 表示结果。 由于小洋同学复读了很多种不同的话,所以你需要回答 t 次询问,每一组都要输出 YES 或 NO 哦~
时间: 2024-12-25 11:23:59 浏览: 2
要判断一个字符串 `a` 是否是由另一个字符串 `b` 的复读(即连续多次重复 `b` 构成)得到,你可以使用循环遍历的方法。以下是一个简单的 C++ 代码实现:
```cpp
#include <iostream>
#include <string>
bool isRepeat(const std::string& b, const std::string& a) {
size_t b_len = b.length();
for (size_t i = 0; i < a.length(); ++i) {
if (a.substr(i, b_len) != b) { // 判断从第 i 个字符开始到 b 长度是否等于 b
return false;
}
else if (i + b_len >= a.length()) { // 如果已经找到了完整的 b,剩下的部分就不必再检查了
break;
}
}
return true;
}
int main() {
int t;
std::cin >> t;
while (t--) {
std::string a, b;
std::cin >> a >> b;
bool result = isRepeat(b, a);
std::cout << (result ? "YES" : "NO") << '\n';
}
return 0;
}
```
这个程序首先定义了一个名为 `isRepeat` 的函数,它接受两个字符串 `b` 和 `a` 作为参数。函数内部用一个 `for` 循环遍历 `a` 中的子串,每次取长度为 `b` 的部分并与 `b` 相比。如果发现不符合的地方就返回 `false`,否则找到 `b` 后跳出循环并返回 `true`。
在主函数 `main` 中,我们读入测试数据的数量 `t`,然后进行 `t` 次询问,每次读入 `a` 和 `b`,调用 `isRepeat` 函数,根据其返回值输出 "YES" 或 "NO"。
阅读全文