用Qt编译无重复字符的最长子串长度包含界面
时间: 2024-05-14 22:16:25 浏览: 8
以下是一个用Qt编写的无重复字符的最长子串长度包含界面的示例代码:
```cpp
#include <QtWidgets/QApplication>
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QVBoxLayout>
#include <QtWidgets/QHBoxLayout>
#include <QtWidgets/QLabel>
#include <QtWidgets/QLineEdit>
#include <QtWidgets/QPushButton>
#include <QString>
#include <QMessageBox>
int lengthOfLongestSubstring(QString s) {
int n = s.length();
int ans = 0;
int left = 0, right = 0;
QSet<QChar> occ;
while (right < n) {
QChar c = s[right];
while (occ.contains(c)) {
occ.remove(s[left]);
left++;
}
occ.insert(c);
right++;
ans = std::max(ans, right - left);
}
return ans;
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QMainWindow mainWindow;
QWidget *centralWidget = new QWidget(&mainWindow);
QVBoxLayout *mainLayout = new QVBoxLayout(centralWidget);
QHBoxLayout *inputLayout = new QHBoxLayout();
QLabel *inputLabel = new QLabel("Input String:");
QLineEdit *inputEdit = new QLineEdit();
inputLayout->addWidget(inputLabel);
inputLayout->addWidget(inputEdit);
QPushButton *calculateButton = new QPushButton("Calculate");
QLabel *resultLabel = new QLabel("Result:");
mainLayout->addLayout(inputLayout);
mainLayout->addWidget(calculateButton);
mainLayout->addWidget(resultLabel);
QObject::connect(calculateButton, &QPushButton::clicked, [&]() {
QString inputString = inputEdit->text();
int result = lengthOfLongestSubstring(inputString);
QMessageBox::information(&mainWindow, "Result", QString("The length of longest substring is %1").arg(result));
});
mainWindow.setCentralWidget(centralWidget);
mainWindow.show();
return a.exec();
}
```
这个示例应用程序包含一个文本框,用户可以输入要计算的字符串,然后单击“计算”按钮来计算最长的不包含重复字符的子字符串的长度。计算完成后,该程序将弹出一个消息框,显示结果。