设不存在一个子串连续出现的字符串称为免平方字符串,给定一个字符串,问它是不是免平方字符串【C/C++】
时间: 2023-10-05 12:06:33 浏览: 97
要判断一个字符串是否为免平方字符串,我们需要遍历字符串的所有子串,检查是否存在连续出现的子串。下面是一个示例的C++代码实现:
```cpp
#include <iostream>
#include <string>
using namespace std;
bool isSquareFree(string str) {
int len = str.length();
for (int i = 0; i < len - 1; i++) {
for (int j = i + 2; j <= len; j++) {
string sub = str.substr(i, j - i);
int subLen = sub.length();
for (int k = 0; k < len - subLen + 1; k++) {
if (k != i && str.substr(k, subLen) == sub) {
return false;
}
}
}
}
return true;
}
int main() {
string str;
cout << "请输入字符串: ";
cin >> str;
if (isSquareFree(str)) {
cout << "该字符串是免平方字符串" << endl;
} else {
cout << "该字符串不是免平方字符串" << endl;
}
return 0;
}
```
在上面的示例代码中,我们首先定义了一个函数 `isSquareFree` 用来判断给定的字符串是否为免平方字符串。该函数通过两层循环遍历所有子串,然后再通过内层循环检查是否存在连续出现的子串。
在 `main` 函数中,我们先输入一个字符串,然后调用 `isSquareFree` 函数进行判断,并输出结果。
注意:这只是一个简单的示例实现,可能不是最优的解法。实际应用中,可能需要根据实际情况进行优化。
阅读全文