使用Qt编译无重复字符的最长子串代码
时间: 2023-10-29 12:02:22 浏览: 92
好的,您想要使用Qt编译无重复字符的最长子串代码,这需要使用到滑动窗口算法来实现。以下是一个示例代码:
```C++
#include <QtDebug>
#include <QString>
#include <unordered_set>
QString longestSubstring(QString s) {
int n = s.length(), ans = 0;
std::unordered_set<QChar> set;
int i = 0, j = 0;
while (i < n && j < n) {
if (set.find(s[j]) == set.end()) {
set.insert(s[j++]);
ans = std::max(ans, j - i);
} else {
set.erase(s[i++]);
}
}
return QString::number(ans);
}
int main(int argc, char *argv[])
{
Q_UNUSED(argc)
Q_UNUSED(argv)
QString str = "pwwkew";
QString result = longestSubstring(str);
qDebug() << "the length of the longest substring without repeating characters is: " << result;
return 0;
}
```
这个代码使用了一个哈希表来存储每个字符是否出现过,如果出现过就从左边缩小窗口直到删掉重复字符为止,否则就向右扩大窗口,同时更新最长子串的长度。
阅读全文