leetcode 3035

leetcode 3035

题目

在这里插入图片描述

例子

在这里插入图片描述

思路

统计字符出现的频次,5个a(字符可以成为回文)。
将所有字符放在一起考虑,因为字符是可以任意移动。[“aabb”,“a”] => [“abba”, “a”]
只要奇数个字符的种类,不要超过字符数组的size就可以。

代码实现

class Solution {
public:
    int maxPalindromesAfterOperations(vector<string>& words) {
        int ans =0;
        int total =0;
        int mask =0;

        for(auto & w:words){
            total += w.length();
            for(auto & ss: w){
                //确认字符是否是奇数,通过异或运算
                mask^=1<<(ss-'a');
            }
        }
        // __builtin_popcount函数统计二进制(mask)有多少个bit是1
        total -= __builtin_popcount(mask);

        sort(words.begin(), words.end(), [](string &a, string& b){ return a.length() < b.length();});
   
        for(auto & w:words){
            //已经减去奇数的部分了, 1/2 =0, 考虑到存在"a" 也是回文,需要对words进行排序
            total -= w.length()/2 *2;
            if(total < 0){
                break;
            }
            ans++;
        }

        return ans;
    }
};

分析

排序时间复杂度平均是0(nlogn)

__builtin_popcount

__builtin_popcount是GCC编译器提供的内建函数,用于计算一个整数中二进制表示中1的个数(即统计整数中1的个数)。

语法:

int __builtin_popcount(unsigned int x);

参数:

  • x:要计算的整数值。

返回值:

  • 返回整数x中二进制表示中1的个数。

示例:

#include <iostream>

int main() {
    unsigned int x = 15; // 二进制表示为 1111
    int count = __builtin_popcount(x); // 计算x中1的个数
    std::cout << "Number of set bits in " << x << ": " << count << std::endl;
    
    return 0;
}

注意:

  • __builtin_popcount函数只能接受unsigned int类型的参数,如果传入其他类型的参数,可能会导致编译错误。
  • 该函数在GCC编译器中可用,可能不适用于其他编译器。

使用__builtin_popcount函数可以高效地计算一个整数中1的个数,特别适用于位操作相关的算法和问题。

遍历

在这两种循环语句中,for(string s : words)for(auto &s : words)的区别在于变量s的类型和是否是引用类型。

  1. for(string s : words)

    • 这种写法会创建words中每个元素的副本,并将副本赋值给变量s。这意味着在循环体内对s的修改不会影响到words中的元素。
    • 这种写法适用于遍历容器中的元素,如果只需要访问元素而不修改它们,这种写法是合适的。
  2. for(auto &s : words)

    • 这种写法使用auto关键字推导出words中元素的类型,并将s声明为对应类型的引用。这样s将直接引用words中的元素,而不是创建副本。
    • 使用引用类型可以提高效率,避免不必要的内存拷贝操作。
    • 如果需要在循环中修改words中的元素,或者希望在循环外部访问修改后的元素,使用引用类型是更好的选择。

综上所述,for(string s : words)会创建元素的副本,而for(auto &s : words)会直接引用。

统计整数x中二进制表示中1的个数

要统计一个整数 x 中二进制表示中 1 的个数,可以使用以下方法:

#include <iostream>

int countSetBits(int x) {
    int count = 0;
    while (x) {
        count += x & 1;
        x >>= 1;
    }
    return count;
}

int main() {
    int x = 25; // 二进制表示为 11001
    int numberOfOnes = countSetBits(x);
    std::cout << "Number of ones in binary representation of " << x << ": " << numberOfOnes << std::endl;
    
    return 0;
}

在上面的示例中,countSetBits 函数用于统计整数 x 中二进制表示中 1 的个数。该函数通过将 x 与 1 进行按位与操作,判断 x 的最低位是否为 1,然后将 x 右移一位,直到 x 变为 0。在每次循环中,如果 x 的最低位为 1,则 count 加一。最终返回 count 即为 x 二进制表示中 1 的个数。

main 函数中,我们给定一个整数 x 的值为 25(二进制表示为 11001),然后调用 countSetBits 函数统计其二进制表示中 1 的个数,并输出结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/475728.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

无管理员权限更新gcc

进入网址下载所需要的gcc版本文件 网址为&#xff1a;https://mirrors.kernel.org/gnu/gcc/ wget https://mirrors.kernel.org/gnu/gcc/gcc-8.5.0/gcc-8.5.0.tar.gz解压并安装 tar -xzvf gcc-8.5.0.tar.gz cd gcc-8.5.0 ./contrib/download_prerequisites ../gcc-8.5.0/confi…

#LT8713SX适用于Type-C/DP1.4转三路Type-C/DP1.4/HDMI2.0应用方案,分辨率高达4K60HZ,支持SST/MST功能。

1. 描述 LT8713SX是一款高性能Type-C/DP1.4转Type-C/DP1.4/HD-DVI2.0转换器&#xff0c;具有三个可配置的DP1.4/HD-DVI2.0/DP输出接口和音频输出接口。LT8713SX 支持 DisplayPort™ 单流传输 &#xff08;SST&#xff09; 模式和多流传输 &#xff08;MST&#xff09; 模式。当…

基于javaweb(springboot)城市地名地址信息管理系统设计和实现

基于javaweb(springboot)城市地名地址信息管理系统设计和实现 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言…

【Qt问题】初始化菜单QMenu的时候,一直报错

问题描述&#xff1a; 我在初始化菜单的时候&#xff0c;一直报错&#xff0c;我检查了很多遍&#xff0c;都找不到问题所在&#xff0c;而且报的错很离谱&#xff0c;说我缺少右括号")"&#xff0c;但是这个语法是怎么都不可能缺少右括号&#xff0c;具体报错界面如…

谷歌应用上架,如何选择IP?

在讨论IP对于谷歌上架的重要性或影响时&#xff0c;需要明确一点&#xff1a;开发者账号质量可以直接影响上架成功率&#xff0c;而IP是影响账号质量的重要因素之一。因此&#xff0c;IP对于谷歌上架的重要性&#xff0c;不言而喻。 我们都清楚&#xff0c;谷歌是不允许一个用户…

网络世界的城关——网卡

网络世界的城关——网卡 网卡到底是什么&#xff1f;网卡的功能网卡的真面目网卡的组成网卡的种类1.基于网络连接方式分类2.基于总线接口类型分类3.基于接口类型的分类4.基于传输速度的分类5.基于应用领域的分类 网卡到底是什么&#xff1f; 网卡我们可以这样通俗地理解&#x…

2024 Java开发跳槽、面试心得体会

前言 由于个人发展的原因和工作上的变动&#xff0c;产生了想出来看看机会的想法&#xff0c;在决定要换工作后就开始复习准备。从年前就开始看面经&#xff0c;系统复习自己使用的技术栈&#xff0c;把自己项目中的技术梳理清楚。3月初开始在招聘网站上投简历&#xff0c;到三…

【C语言】模拟实现 atoi

文章目录 atoi()函数模拟实现思路分析代码呈现 atoi()函数 通过上述cplusplus和MSDN对atoi函数的介绍我们可以得出以下几个关键点 库函数&#xff1a; <stdlib.h>形参&#xff1a;const char * str返回值&#xff1a; int作用&#xff1a;atoi函数是将一个字符串转化成一…

S2-066分析与复现

Foreword 自struts2官方纰漏S2-066漏洞已经有一段时间&#xff0c;期间断断续续地写&#xff0c;直到最近才完成&#xff0c;o(╥﹏╥)o。羞愧地回顾一下官方通告&#xff1a; 2023.12.9发布&#xff0c;编号CVE-2023-50164&#xff0c;主要影响版本是 2.5.0-2.5.32 以及 6.0.…

国产AI插件StartAI PS平替之【局部重绘】

PS beta有创成式填充&#xff0c;StartAI有【局部重绘】【扩图】&#xff0c;国内设计师的好物推荐。图像延展填充这么做&#xff1f;StartAI【扩图】帮你填充图像&#xff0c;【局部重绘】帮你调整图像细节。 【局部重绘】适用于广告、摄影等图像领域。 原图 我们对图片中的…

最近公共祖先(Tarjin)

【模板】最近公共祖先&#xff08;LCA&#xff09; 题目描述 如题&#xff0c;给定一棵有根多叉树&#xff0c;请求出指定两个点直接最近的公共祖先。 输入格式 第一行包含三个正整数 N , M , S N,M,S N,M,S&#xff0c;分别表示树的结点个数、询问的个数和树根结点的序号…

十、MySQL主从架构配置

目录 一、资源配置 二、主从同步基本原理&#xff1a; 1、具体步骤&#xff1a; 2、数据库是靠什么同步的&#xff1f; 3、pos与GTID的区别&#xff1f; 三、配置一主两从 &#xff08;1&#xff09;为主库和从库创建复制账户&#xff0c; 分别在主从库上执行如下命令&a…

Chrome 114 带着侧边栏扩展来了

效果展示 manifest.json {"manifest_version": 3,"name": "ChatGPT学习","version": "0.0.2","description": "ChatGPT,GPT-4,Claude3,Midjourney,Stable Diffusion,AI,人工智能,AI","icons"…

健康星球乃幸福源泉:AI如何助力拯救环境

地球、环境和自然是有机融入的&#xff0c;自形成以来就一直维持着自我。看似如此有机的东西无需技术&#xff0c;但随着地球上发生的各种变化&#xff0c;我们却可以寄希望于人工智能&#xff08;AI&#xff09;帮助地球重回正轨&#xff0c;迎接幸福健康的千年。全球目标业已…

Stable Diffusion之核心网络结构解析

Stable Diffusion核心网络结构解析 1. SD模型整体架构初识 1. SD模型整体架构初识 Stable Diffusion模型整体上是一个End-to-End模型&#xff0c;主要由以下三个核心组件构成。 VAE&#xff08;变分自编码器&#xff0c;Variational Auto-Encoder&#xff09;&#xff0c;U-N…

带你玩透浮动float布局,详解(一)

文章目录 一 认识浮动二 浮动的规则浮动的规则一代码展示 浮动规则二代码展示 浮动规则四代码展示代码展示 浮动规则五 空隙的解决方案代码展示:第一种方式 放在一行第二种解决方式&#xff08;不推荐使用这种方式&#xff09;第三种方式采用浮动&#xff08;推荐&#xff0c;统…

ESP-IDF 外设SPI驱动

本文只是对ESP32S3的SPI使用进行简单的介绍&#xff0c;主要讲解基于ESP-IDF的四线标准SPI的简单使用。并不涉及非固定长度结构体、dummy位的使用、高速SPI以及其它类型的SPI工作模式。 更加专业的内容可以参考&#xff1a;SPI 主机驱动程序 SPI简介 SPI&#xff08;serial …

【JS】替换文本为emjio表情

最终效果展示 T1 T2 T3 T4 需求 把评论你好帅啊啊啊[开心][开心]&#xff0c;[开心] 替换为图片 思路 正则match提取[开心]到一个数组数组去重创建img标签img标签转文本. 。例&#xff1a;&#xff08;el.outerHTML&#xff09;&#xff0c;将el元素转文本字符串replaceAll…

TikTok运营要用什么样的IP?怎么选择?

对于运营TikTok的从业者来说&#xff0c;IP的重要性自然不言而喻。 在其他条件都正常的情况下&#xff0c;拥有一个稳定&#xff0c;纯净的IP&#xff0c;你的视频起始播放量很可能比别人高出不少&#xff0c;而劣质的IP轻则会限流&#xff0c;重则会封号。那么&#xff0c;如何…

jQuery 选择器--获取元素

文章目录 1 jQuery 基础选择器2 层级选择器3 隐式迭代(重要)4 jQuery 筛选选择器5 jQuery 筛选方法(重点)案例--下拉菜单 6 jQuery 排他思想*案例--左右Tab栏切换 7 jQuery 链式编程 1 jQuery 基础选择器 2 层级选择器 3 隐式迭代(重要) 示例&#xff1a; 4 jQuery 筛选选择器…