求多个字符串序列的交集
Posted samp000
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求多个字符串序列的交集相关的知识,希望对你有一定的参考价值。
这是实际开发中遇到的问题,留个纪念,以后优化。
mydialog.h
#ifndef MYDIALOG_H
#define MYDIALOG_H
#include <QDialog>
#include <QStringList>
class MyDialog : public QDialog
{
Q_OBJECT
public:
MyDialog(QWidget *parent = nullptr);
~MyDialog();
QStringList intersection(const QStringList &list1, const QStringList &list2);
};
#endif // MYDIALOG_H
mydialog.cpp
#include "mydialog.h"
MyDialog::MyDialog(QWidget *parent) : QDialog(parent)
{
QStringList list1;
list1 << "aaa" << "bbb" << "ccc";
QStringList list2;
list2 << "ccc" << "ddd" << "fff";
QStringList result = intersection(list1, list2);
}
MyDialog::~MyDialog()
{
}
// 求字符串序列的交集
QStringList MyDialog::intersection(const QStringList &list1, const QStringList &list2)
{
QStringList result;
// 先判断参数的有效性
if(list1.isEmpty() || list2.isEmpty())
{
return result;
}
// 求交集
for(int i = 0; i < list1.size(); i++)
{
QString list1_str = list1.at(i);
for(int j = 0; j < list2.size(); j++)
{
QString list2_str = list2.at(j);
if(!list1_str.compare(list2_str))
{
result.append(list1_str);
}
}
}
return result;
}
main.cpp
#include "mydialog.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MyDialog w;
w.show();
return a.exec();
}
效果展示
1.实际项目中,是多个字符串序列求交集,因此时间复杂度是n3;
2.实际项目中,单个字符串序列没有重复字符串,因此没有考虑该问题。
以上是关于求多个字符串序列的交集的主要内容,如果未能解决你的问题,请参考以下文章
leetcode打卡——299. 猜数字游戏(求交集or标记法)