当前位置: 首页 > news >正文

01.04、回文排序

01.04、[简单] 回文排序

1、题目描述

给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。回文串不一定是字典当中的单词。

2、解题思路

  1. 回文串的特点
    • 一个回文串在字符出现次数上有特定的规律:在回文串中,所有字符的出现次数都必须是偶数,除非字符串的长度是奇数,那么只有一个字符可以出现奇数次,其它所有字符都必须出现偶数次。
    • 例如,"racecar" 是一个回文串,因为 'r', 'a', 'c' 都是偶数次出现,且字符 'e' 出现了一次(奇数次)。
  2. 统计字符出现次数
    • 我们可以通过一个计数器数组来记录每个字符出现的次数。
  3. 检查奇数次字符的数量
    • 如果有超过一个字符的出现次数是奇数,那么字符串无法重新排列成回文串。
    • 否则,字符串可以重新排列成一个回文串。

3、代码实现

class Solution {
public:bool canPermutePalindrome(string s) {// 创建一个大小为 128 的数组来记录每个字符的出现次数int hash[128] = {0};for (const auto& ch : s) {hash[ch]++; // 统计每个字符的出现次数}int ans = 0; // 用于记录出现次数为奇数的字符数量for (int i = 0; i < 128; i++) {if (hash[i] % 2) {ans++; // 如果出现次数是奇数,增加计数}}// 如果出现次数为奇数的字符数量不超过 1,说明可以排列成回文串return ans <= 1;}
};

4、代码详解

  • 初始化一个大小为 128 的整型数组 hash,用于记录 ASCII 字符的出现次数。ASCII 码表的字符范围是 0-127,因此我们使用 128 大小的数组。
  • 遍历字符串 s 中的每个字符,并增加对应位置的计数。hash[ch]++ 将字符 ch 对应的计数增加 1。
  • 初始化一个变量 ans,用于记录字符出现次数为奇数的数量。
  • 遍历 hash 数组,检查每个字符的出现次数。如果出现次数是奇数,则将 ans 增加 1。
  • 检查 ans 的值。如果出现次数为奇数的字符数量不超过 1,那么字符串可以排列成回文串,返回 true;否则返回 false

5、总结

通过统计每个字符的出现次数,并检查出现次数为奇数的字符数量,我们可以有效地判断一个字符串是否能够通过重新排列字符形成一个回文串。这种方法的时间复杂度为 O(n),其中 n 是字符串的长度,空间复杂度为 O(1),因为 hash 数组的大小是固定的。

相关文章:

01.04、回文排序

01.04、[简单] 回文排序 1、题目描述 给定一个字符串&#xff0c;编写一个函数判定其是否为某个回文串的排列之一。回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。回文串不一定是字典当中的单词。 2、解题思路 回文串的特点&#xff1a; 一个回文串在…...

[创业之路-259]:《向流程设计要效率》-1-让成功成熟业务交给流程进行复制, 把创新产品新业务新客户交给精英和牛人进行探索与创造

标题&#xff1a;成功与创新的双轨并行&#xff1a;以流程复制成熟&#xff0c;以精英驱动新知 在当今这个日新月异的商业环境中&#xff0c;企业要想持续繁荣发展&#xff0c;就必须在稳定与创新之间找到完美的平衡点。一方面&#xff0c;成熟业务的稳定运营是企业生存和发展的…...

如何使用usememo和usecallback进行性能优化,什么时候使用usecallback,什么时候使用usememo

React useMemo 和 useCallback 性能优化总结以及使用场景 基本概念 useMemo 用于缓存计算结果&#xff0c;避免在每次渲染时重复进行昂贵的计算。 useCallback 用于缓存函数引用&#xff0c;避免在每次渲染时创建新的函数引用。 使用时机对比 useMemo 适用场景 复杂计算…...

22. C语言 输入与输出详解

本章目录: 前言1. 输入输出的基础概念1.1 标准输入输出流1.2 输入输出函数 2. 格式化输出与输入2.1 使用 printf() 进行输出示例 1: 输出字符串示例 2: 输出整数示例 3: 输出浮点数 2.2 使用 scanf() 进行输入示例 4: 读取整数和字符改进方案&#xff1a;使用getchar()清理缓冲…...

WPF实战案例 | C# WPF实现计算器源码

WPF实战案例 | C# WPF实现计算器源码 一、设计来源计算器应用程序讲解1.1 主界面1.2 计算界面 二、效果和源码2.1 界面设计&#xff08;XAML&#xff09;2.2 代码逻辑&#xff08;C#&#xff09;2.3 实现步骤总结 源码下载更多优质源码分享 作者&#xff1a;xcLeigh 文章地址&a…...

AutoGen入门——快速实现多角色、多用户、多智能体对话系统

1.前言 如https://github.com/microsoft/autogen所述&#xff0c;autogen是一多智能体的框架&#xff0c;属于微软旗下的产品。 依靠AutoGen我们可以快速构建出一个多智能体应用&#xff0c;以满足我们各种业务场景。 本文将以几个示例场景&#xff0c;使用AutoGen快速构建出…...

LeetCode 热题 100_全排列(55_46_中等_C++)(递归(回溯))

LeetCode 热题 100_两数之和&#xff08;55_46&#xff09; 题目描述&#xff1a;输入输出样例&#xff1a;题解&#xff1a;解题思路&#xff1a;思路一&#xff08;递归&#xff08;回溯&#xff09;&#xff09;&#xff1a; 代码实现代码实现&#xff08;思路一&#xff08…...

将 AzureBlob 的日志通过 Azure Event Hubs 发给 Elasticsearch(1.标准版)

问题 项目里使用了 AzureBlob 存储了用户上传的各种资源文件&#xff0c;近期 AzureBlob 的流量费用增长很快&#xff0c;想通过分析Blob的日志&#xff0c;获取一些可用的信息&#xff0c;所以有了这个需求&#xff1a;将存储账户的日志&#xff08;读写&#xff0c;审计&…...

pthread_exit函数

pthread_exit 是 POSIX 线程库&#xff08;pthread&#xff09;中的一个函数&#xff0c;用于显式地终止调用线程。与 exit 函数不同&#xff0c;pthread_exit 仅影响调用它的线程&#xff0c;而不是整个进程。使用 pthread_exit 可以确保线程在退出时能够正确地释放线程相关的…...

1月21日星期二今日早报简报微语报早读

1月21日星期二&#xff0c;农历腊月廿二&#xff0c;早报#微语早读。 1、多地官宣&#xff1a;2025年可有序、限时或在限定区域燃放烟花爆竹&#xff1b; 2、TikTok恢复在美服务&#xff1b;特朗普提出继续运营TikTok方案&#xff0c;外交部&#xff1a;若涉及收购中国企业应…...

【2024年终总结】我与CSDN的一年

&#x1f449;作者主页&#xff1a;心疼你的一切 &#x1f449;作者简介&#xff1a;大家好,我是心疼你的一切。Unity3D领域新星创作者&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6; &#x1f449;记得点赞 &#x1f44d; 收藏 ⭐爱你们&#xff0c;么么哒 文章目录 …...

openssl 正确生成v3带SAN的证书

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…...

Golang Gin系列-5:数据模型和数据库

在这篇Gin教程的博客中&#xff0c;我们将探索如何将模型和数据库与Gin框架无缝集成&#xff0c;使你能够构建健壮且可扩展的web应用程序。通过利用流行的库并遵循最佳实践&#xff0c;你将学习如何定义模型、建立数据库连接、执行CRUD操作以及确保基于gin的项目中的数据完整性…...

比简单工厂更好的 - 工厂方法模式(Factory Method Pattern)

工厂方法模式&#xff08;Factory Method Pattern&#xff09; 工厂方法模式&#xff08;Factory Method Pattern&#xff09;工厂方法模式&#xff08;Factory Method Pattern&#xff09;概述工厂方法模式&#xff08;Factory Method Pattern&#xff09;结构图工厂方法模式&…...

分布式搜索引擎02

1. DSL查询文档 elasticsearch的查询依然是基于JSON风格的DSL来实现的。 1.1. DSL查询分类 Elasticsearch提供了基于JSON的DSL&#xff08;Domain Specific Language&#xff09;来定义查询。常见的查询类型包括&#xff1a; 查询所有&#xff1a;查询出所有数据&#xff0c…...

阿里云安装mikrotik7配置内网互通

阿里云近期推出了200M不限量机器&#xff0c;对于没有公网接入的中小企业可以借助这个机器对多地分支机构进行内网互通。目前已经有很多机构用这个搞跨云k8s,跨云集群了。 mikrotik作为一个商用的软件&#xff0c;操作性比一些开源的软件好用不少。 本文使用的网段为172.16.1…...

Docker网段和服务器ip冲突导致无法访问网络的解决方法

若宿主机所在网络的网段为172.[17-31].xx.xx&#xff0c;则会与Docker本身内部网络间出现冲突&#xff0c;此时需要重新配置Docker默认地址池 一&#xff1a;查看docker的默认网段 route 二&#xff1a;修改docker的默认网段 etc/docker/daemon.json文件增加修改网段信息 {…...

Kubernetes 集群中安装和配置 Kubernetes Dashboard

前言 上篇成功部署Kubernetes集群后&#xff0c;为了方便管理和监控集群资源&#xff0c;安装Kubernetes Dashboard显得尤为重要。Kubernetes Dashboard 是一个通用的、基于 Web 的 UI&#xff0c;旨在让用户轻松地部署容器化应用到 Kubernetes 集群&#xff0c;并对这些应用进…...

Android开发之Spinner

Android开发之Spinner 1. 概述2. Spinner3. 适配器3.1 ArrayAdapter3.2 SimpleAdapter 1. 概述 Android开发学习笔记。学习下拉框控件Spinner和适配器&#xff08;数组适配器ArrayAdapter、简单适配器SimpleAdapter&#xff09;的使用。 2. Spinner 下拉框控件&#xff0c;用…...

【c++继承篇】--继承之道:在C++的世界中编织血脉与传承

目录 引言 一、定义二、继承定义格式2.1定义格式2.2继承关系和访问限定符2.3继承后子类访问权限 三、基类和派生类赋值转换四、继承的作用域4.1同名变量4.2同名函数 五、派生类的默认成员构造函数5.1**构造函数调用顺序&#xff1a;**5.2**析构函数调用顺序&#xff1a;**5.3调…...

YOLO使用SAHI进行小目标检测

目录 一、环境配置二、使用ultralytics的YOLO模型进行训练和推理三、推理可视化的两种方法四、使用SAHI和ultralytics 训练的YOLO模型进行推理一、环境配置 下面是环境的配置过程,根据代码复杂度可以额外安装其他包。 #创建虚拟环境 conda create -n 环境名 python=3.9 #开启…...

STM32高级物联网通信之以太网通讯

目录 以太网通讯基础知识 什么是以太网 互联网和以太网的区别 1&#xff09;概念与范围 &#xff08;1&#xff09;互联网 &#xff08;2&#xff09;以太网 2&#xff09;技术特点 &#xff08;1&#xff09;互联网 &#xff08;2&#xff09;以太网 3&#xff09;应…...

基于多模态脑电、音频与视觉信号的情感识别算法【Nature核心期刊,EAV:EEG-音频-视频数据集】

简述 理解情感状态对于开发下一代人机交互界面至关重要。社交互动中的人类行为会引发受感知输入影响的心理生理过程。因此&#xff0c;探索大脑功能与人类行为的努力或将推动具有类人特质人工智能模型的发展。这里原作者推出一个多模态情感数据集&#xff0c;包含42名参与者的3…...

数据湖 (特点+与数据仓库和数据沼泽的对比讲解)

数据湖就像一个“数据水库”&#xff0c;把企业所有原始数据&#xff08;结构化的表格、半结构化的日志、非结构化的图片/视频&#xff09;原样存储&#xff0c;供后续按需分析。 对比传统数据仓库&#xff1a; 数据仓库数据湖数据清洗后的结构化数据&#xff08;如Excel表格&…...

STM32G4 电机外设篇(二) VOFA + ADC + OPAMP

目录 一、STM32G4 电机外设篇&#xff08;二&#xff09; VOFA ADC OPAMP1 VOFA1.1 VOFA上位机显示波形 2 ADC2.1 用ADC规则组对板载电压和电位器进行采样 3 OPAMP&#xff08;运放&#xff09;3.1 结合STM32内部运放和ADC来完成对三相电流的采样3.2 运放电路分析 附学习参考…...

linux系统与shell 笔记

Linux 系统 Linux 是一种开源的操作系统内核&#xff0c;基于 Unix 设计&#xff0c;具有多用户、多任务、高稳定性和安全性的特点。它广泛应用于服务器、嵌入式设备和个人计算机领域。Linux 系统的核心组件包括内核、系统库、工具链和用户界面&#xff08;如命令行或图形界面…...

Fluence (FLT) 2026愿景:RWA代币化加速布局AI算力市场

2025年5月29日&#xff0c;苏黎世 - Fluence&#xff0c;企业级去中心化计算平台&#xff0c;荣幸地揭开其2026愿景的面纱&#xff0c;并宣布将于6月1日起启动四大新举措。 Fluence 成功建立、推出并商业化了其去中心化物理基础设施计算网络&#xff08;DePIN&#xff09;&…...

如何撰写一篇优质 Python 相关的技术文档 进阶指南

&#x1f49d;&#x1f49d;&#x1f49d;在 Python 项目开发与协作过程中&#xff0c;技术文档如同与团队沟通的桥梁&#xff0c;能极大提高工作效率。但想要打造一份真正实用且高质量的 Python 技术文档类教程&#xff0c;并非易事&#xff0c;需要在各个环节深入思考与精心打…...

vue + ant-design + xlsx 实现Excel自定义模板导入功能

Vue Ant Design 扩展&#xff1a;实现Excel自定义模板导入功能 引言 在企业级应用场景中&#xff0c;除了数据导出&#xff0c;模板化导入是另一个核心需求。本文将深入讲解如何基于Vue3 Ant Design Vue xlsx技术栈&#xff0c;实现以下高级导入功能&#xff1a; 自定义模…...

某验4无感探针-js逆向

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、总体概述二、请求分析1.分析请求流程三、逆向分析四、执行验证总结一、总体概述 本文主要实现用协议过某验4无感探针,相关的链接:aHR0cHM6Ly9ndDQuZ2VldGVzdC5jb20vZGVtb3Y0L2ludmlzaWJsZS1…...