鹦鹉学舌
描述
小明养了一直鹦鹉,平时喜欢训练鹦鹉说话,一开始从简单的单词开始,每个单词小明都会教很多遍,所以鹦鹉也会重复很多遍,由于鹦鹉还小,没有数字的概念,会不停的重复,一天小明想知道自己的鹦鹉是否一直在重复的说自己教它的单词,于是把鹦鹉说的单词录了下来,并给出小明教的单词,由于鹦鹉一直在重复,所以句子可能会很长,小明请你帮助他判断一下,如果一直在重复一个单词输出YES,否则输出NO
day13-01.zip
输入
第一行一个整数T(T<=100),表示数据组数
其后T行,每行两个字符串,用空格隔开,第一个字符串a表示鹦鹉说的句子,第二个字符串b表示小明教的单词
输出
T行,根据题目要求输出YES或NO
输入样例 1
1
输出样例 1
YES
输入样例
输出样例 2
NO
提示
a的长度小于105,b的长度小于
直接给代码看
#include <iostream>
#include <string>
using namespace std;
// 判断鹦鹉是否一直重复一个单词
bool is_repeating(string a, string b) {
// 如果鹦鹉说的句子为空或者小明教的单词为空,返回false
if (a.empty() || b.empty()) return false;
// 如果鹦鹉说的句子长度不是单词长度的整数倍,返回false
if (a.size() % b.size() != 0) return false;
// 遍历鹦鹉说的句子,每次取出一个单词长度的子串,和小明教的单词比较,如果不相等,返回false
for (int i = 0; i < a.size(); i += b.size()) {
string sub = a.substr(i, b.size());
if (sub != b) return false;
}
// 如果都相等,返回true
return true;
}
int main() {
int T; // 数据组数
cin >> T; // 输入数据组数
while (T--) { // 对每组数据
string a, b; // 鹦鹉说的句子和小明教的单词
cin >> a >> b; // 输入句子和单词
if (is_repeating(a, b)) { // 调用函数判断是否重复
cout << "YES" << endl; // 如果重复,输出YES
} else {
cout << "NO" << endl; // 如果不重复,输出NO
}
}
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!引用chatgpt内容作答:
运行结果:
根据题目描述,你需要判断鹦鹉是否一直在重复一个单词。对于每组数据,你需要检查鹦鹉说的句子是否只包含小明教的那个单词,如果是的话,输出"YES",否则输出"NO"。
以下是一个c++代码示例来解决这个问题:
#include <iostream>
#include <string>
using namespace std;
string checkRepetition(const string& sentence, const string& word) {
size_t wordLength = word.length();
size_t sentenceLength = sentence.length();
if (sentenceLength % wordLength != 0) {
return "NO";
}
for (size_t i = 0; i < sentenceLength; i += wordLength) {
if (sentence.substr(i, wordLength) != word) {
return "NO";
}
}
return "YES";
}
int main() {
int T;
cin >> T;
for (int i = 0; i < T; ++i) {
string sentence, word;
cin >> sentence >> word;
string result = checkRepetition(sentence, word);
cout << result << endl;
}
return 0;
}
将上述代码保存为 .cpp 文件,然后使用 C++ 编译器进行编译和运行。根据输入输出示例,程序将会按照题目要求输出结果。
引用 皆我百晓生 小程序回复内容作答:
根据题意,我们需要判断鹦鹉说的句子中是否只有一个单词一直重复。我们可以按以下步骤编写代码:
下面是相应的Python代码实现:
T = int(input())
for _ in range(T):
a, b = input().split()
words = a.split()
if words.count(b) == len(words):
print("YES")
else:
print("NO")
请注意,这里使用了一个下划线作为循环变量名,表示这个变量在循环中不会被使用。您可以将其替换为其他变量名。另外,这段代码假设了输入的数据是合法的,即每组数据的句子不会为空,并且教的单词也不会为空。如有需要,请根据实际情况进行适当的错误处理。
#include <iostream>
#include <string>
using namespace std;
string method(string sentence, string word) {
int len = sentence.length();
int wordLen = word.length();
if (len < wordLen) {
return "NO";
}
for (int i = 0; i <= len - wordLen; i++) {
if (sentence.substr(i, wordLen) == word) {
return "YES";
}
}
return "NO";
}
int main() {
int T;
cin >> T;
for (int i = 0; i < T; i++) {
string sentence, word;
cin >> sentence >> word;
cout << method(sentence, word) << endl;
}
return 0;
}
【以下回答由 GPT 生成】
首先,我们需要读取输入,并根据给定的数据组数T进行循环处理。
在每一组数据中,我们需要读取鹦鹉说的句子a和小明教的单词b,并进行判断。
我们可以使用字符串处理函数来解决这个问题。
首先,使用字符串分割函数将鹦鹉说的句子a按照空格拆分为一个字符串数组。
然后,对于数组中的每个字符串,我们可以与小明教的单词b进行比较。
注意,鹦鹉可能会说的句子很长,所以我们需要判断是否重复了,也就是说,连续的两个字符串是否相同。
最后,根据判断的结果输出YES或NO。
下面是C++代码的实现:
#include <iostream>
#include <vector>
#include <sstream>
using namespace std;
vector<string> split(const string& s, char delimiter) {
vector<string> tokens;
string token;
istringstream tokenStream(s);
while (getline(tokenStream, token, delimiter)) {
tokens.push_back(token);
}
return tokens;
}
bool isRepeatingWords(const string& a, const string& b) {
vector<string> words = split(a, ' ');
int n = words.size();
for (int i = 1; i < n; i++) {
if (words[i] != b || words[i] == words[i - 1]) {
return false;
}
}
return true;
}
int main() {
int T;
cin >> T;
cin.ignore();
for (int i = 0; i < T; i++) {
string a, b;
getline(cin, a);
getline(cin, b);
if (isRepeatingWords(a, b)) {
cout << "YES" << endl;
} else {
cout << "NO" << endl;
}
}
return 0;
}
以上代码中,我们定义了一个split
函数来将字符串按照分隔符拆分为字符串数组。
接着,我们定义了一个isRepeatingWords
函数来判断是否重复了单词。
在main
函数中,我们首先读取数据组数T,然后对于每一组数据,读取鹦鹉说的句子a和小明教的单词b,并调用isRepeatingWords
函数进行判断,并输出结果。
最后,我们返回0表示程序成功运行结束。
【相关推荐】
输入样例没有,重新贴一下看看
#include <iostream>
using namespace std;
//参考了这个代码:https://www.cnblogs.com/Jozky/p/14075782.html
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* @param a string字符串 待计算字符串
* @return int整型
*/
bool judge(string &a,int s,int len)
{
for(int i=s;i<s+len;i++){
if(a[i]!=a[i+len])return 0;
}
return 1;
}
int solve(string a) {
// write code here
int len=a.size();
for(int i=len/2;i;i--)
{
for(int s=0;s<=len-i*2;s++)
{
if(judge(a,s,i))
return 2*i;
}
}
return 0;
}
};
int main()
{
string s;
cin >> s;
Solution sol;
if (sol.solve(s))
cout << "YES";
else
cout << "NO";
return 0;
}