[QT]获取一个QStringList中重复最大次数的字符串**

[QT]获取一个QStringList中重复最大次数的字符串

示例程序如下:

QString MainWindow::getTruePlate(QStringList stringList) /* 输入为QStringList,输出为重复次数最多的那个字符串 */
{
    if(stringList.isEmpty())
        return "";  /* 如果字符串集合为空,则返回一个空字符串 */
    
    QMap<QString, int> countOfStrings;
    /* 定义一个QMap容器,通过它可以得到一个<键、值)>的集合,把第一个参数QString作为键,第二个参数int作为键值 */
    for (int i = 0; i < stringList.count(); i++) {  /* 遍历所有的字符串储存在容器中 */
        countOfStrings[stringList[i]]++;
    }
    qDebug() << countOfStrings; /* 看一下Qmap的结果 */
    
    QList<int> countOfInt = countOfStrings.values(); /* 得到所有的键值,存放在int型List中 */
    byte max = countOfInt[0];
    for(byte i = 1; i < countOfInt.count(); i++){   /* 得到最大的键值 */
        if(countOfInt[i] > max) max = countOfInt[i];
    }
    QString plateMax = countOfStrings.key(max);    /* 由最大的键值去取对应的字符串,就是我们想要的结果 */
    return plateMax;
}

测试一下:

void MainWindow::btnTest()
{
    QStringList listOfStrings ;

    listOfStrings << ("豫A52LJ0") << ("豫A52LJ0")<< ("豫A52LJ0")
                  << ("豫A52LJ0") << ("豫A84845")<< ("豫A84845")
                  << ("粤A09C2C") << ("粤A09C2C")<< ("豫A84845")
                  << ("豫A84861") << ("豫A84865")<< ("豫A84861")
                  << ("豫A84861") << ("豫A84861")<< ("豫A84861");
    qDebug() << getTruePlate(listOfStrings);
}

点击按钮,输出结果为:

QMap(("粤A09C2C", 2)("豫A52LJ0", 4)("豫A84845", 3)("豫A84861", 5)("豫A84865", 1))
"豫A84861"
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值