用qt可视化一个最长回文串
时间: 2024-05-09 20:19:36 浏览: 74
字符串寻找最长回文
在Qt中,可以用QTextEdit控件来显示最长回文串,实现代码如下:
```cpp
#include <QtWidgets>
QString longestPalindrome(QString s) {
int n = s.length();
if (n == 0) {
return "";
}
bool dp[n][n];
memset(dp, false, sizeof(dp));
QString ans = "";
int maxLength = 0;
// 所有长度为1的子串都是回文串
for (int i = 0; i < n; i++) {
dp[i][i] = true;
ans = s[i];
maxLength = 1;
}
// 枚举子串长度
for (int len = 2; len <= n; len++) {
// 枚举子串起始位置
for (int i = 0; i < n; i++) {
int j = i + len - 1;
if (j >= n) {
break;
}
if (s[i] == s[j]) {
if (len == 2 || dp[i + 1][j - 1]) {
dp[i][j] = true;
if (len > maxLength) {
maxLength = len;
ans = s.mid(i, len);
}
}
}
}
}
return ans;
}
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
// 创建窗口和控件
QWidget window;
QVBoxLayout *layout = new QVBoxLayout(&window);
QTextEdit *textEdit = new QTextEdit(&window);
QPushButton *button = new QPushButton("计算最长回文串", &window);
// 添加控件到布局中
layout->addWidget(textEdit);
layout->addWidget(button);
// 连接按钮的点击事件和计算最长回文串函数
QObject::connect(button, &QPushButton::clicked, [&]() {
QString s = textEdit->toPlainText();
QString ans = longestPalindrome(s);
QMessageBox::information(&window, "最长回文串", ans);
});
// 显示窗口
window.show();
return app.exec();
}
```
运行程序后,输入一个字符串,点击按钮即可计算出该字符串的最长回文串,并在弹出窗口中显示。
阅读全文