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

判定是否互为字符重排、回文排列

题1:判定是否互为字符重排

给定两个由小写字母组成的字符串 s1s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。

输入: s1 = "abc", s2 = "bca"
输出: true 
输入: s1 = "abb", s2 = "aab"
输出: false

解题思路:

1.遍历s1,构建哈希表,记录s1中出现的字符且该字符出现的个数

2. 遍历s2,在哈希表中查找s2中的字符是否在s1中出现过

若找到,同时哈希表对应的值大于1,map[s2[i]]--

若找到,同时哈希表对应的值小于1,说明当前这个字符在s2中出现的次数比s1中出现的多,返回false

若找不到,map.find(s2[i])==map.end(),说明当前字符在s1中没有出现过,返回false

源代码如下:

class Solution {
public:bool CheckPermutation(string s1, string s2) {unordered_map<char,int> map;if(s1.size()!=s2.size()) return false;for(int i=0;i<s1.size();i++){map[s1[i]]+=1;//用哈希表保存s1字符中每个字符出现的次数}for(int i=0;i<s2.size();i++){//遍历s2,找哈希表中是否存在s2字符串中的每个字符,且出现次数是否相同if(map.find(s2[i])==map.end()||map[s2[i]]<1){return false;}map[s2[i]]--;}return true;}
};

题2:回文排列

给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。

回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。

回文串不一定是字典当中的单词。

输入:"tactcoa"
输出:true(排列有"tacocat"、"atcocta",等等)
输入:"aa"
输出:true("aa"本身就是回文串)

解题思路:

 判断回文重排,也就是说判断将字符串重排后是否能够组成回文串

这里我们定义一个sum变量,当前字符第一次出现,则sum+=1

当前字符第二次出现,则sum-=1

将所有字符遍历完后,要组成回文串

那么该字符串里每个字符出现的个数,要么都是两次,例如abba,sum=1+1-1-1=0

要么只有一个字符出现一次,其余字符都必须出现两次,例如:tacocat,sum=1+1+1+1-1-1-1=1

所以跟题1类似,我们需要判断字符出现的个数,从而判断是否是回文重排

源代码如下:

class Solution {
public:bool canPermutePalindrome(string s) {unordered_map<char,int> map;//建立哈希表来保存字符出现的次数int sum=0;//起始总和为0for(int i=0;i<s.size();i++){//在哈希表中找不到,说明是第一次出现,则sum+1//找到后,发现值为-1,说明前面已经有该字符两两配对过了,所以也就是新的一轮了则sum+1if(map.find(s[i])==map.end()||map[s[i]]==-1){map[s[i]]=1;//先给哈希表赋值sum+=map[s[i]];//sum加上当前的值}//剩下的情况就是,当前字符出现过一次,那么出现第二次时,就从sum中-1else{map[s[i]]=-1;sum+=map[s[i]];}}//只有sum=1/sum=0 才能是回文重排return sum==1||sum==0;}
};

相关文章:

判定是否互为字符重排、回文排列

题1&#xff1a;判定是否互为字符重排 给定两个由小写字母组成的字符串 s1 和 s2&#xff0c;请编写一个程序&#xff0c;确定其中一个字符串的字符重新排列后&#xff0c;能否变成另一个字符串。 输入: s1 "abc", s2 "bca" 输出: true 输入: s1 &quo…...

QT QTextCharFormat 说明和使用

QTextCharFormat&#xff1a;设置文本编辑框字体&#xff0c;字号&#xff0c;加粗&#xff0c;倾斜&#xff0c;下划线&#xff0c;颜色 QTextCharFormat 类的一些常用属性和方法&#xff1a; setFont(const QFont &font): 设置字体。 setFontFamily(const QString &a…...

掌握Memory Profiler技巧:识别内存问题

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、人工智能等&#xff0c;希望大家多多支持。 目录 一、导读二、概览三、如何使用四、页面说明4.1 Java 和 Kotlin 分配…...

Linux学习之正则表达式元字符和grep命令

cat /etc/redhat-release看到操作系统的版本是CentOS Linux release 7.6.1810 (Core)&#xff0c;uname -r可以看到内核版本是3.10.0-957.21.3.el7.x86_64。 正则表达式是一种搜索字符串的模式&#xff0c;通俗点理解&#xff0c;也就是普通字符和元字符共同组成的字符集合匹…...

熟练掌握ChatGPT解决复杂问题——学会提问

目录 引言 一、5W1H分析法 1. 简单的问题&#xff08;what、where、when、who&#xff09; 2.复杂的问题&#xff08;why、how&#xff09; 2.1 为什么&#xff08;Why&#xff09;——原因 2.2 方式 &#xff08;How&#xff09;——如何 二、如何提问得到更高质量的答案…...

JVM之类加载与字节码

1.类文件结构 一个简单的HelloWorld.Java package cn.itcast.jvm.t5; // HelloWorld 示例 public class HelloWorld { public static void main(String[] args) { System.out.println("hello world"); } }编译为 HelloWorld.class 后的样子如下所示&#xff1a; […...

【博客688】如何实现keepalived vip监控与告警

如何实现keepalived vip监控与告警 1、使用的exporter https://github.com/mehdy/keepalived-exporter2、metrics里的状态的具体含义 注意&#xff1a;存状态的字符串的每个状态的值其实是跟状态在数组中的索引相对应的 具体参考这里&#xff1a; https://github.com/mehdy…...

[QT编程系列-39]:用户界面UI - 样式表QSS与样式文件快速入门

目录 1. 概述 2. CSS 3. QSS示例 4. QT样式表文件使用方法与步骤 5. QT内置样式 6. QT常见基本样式 1. 概述 Qt提供了一种称为Qt样式表&#xff08;Qt Style Sheets&#xff09;的机制&#xff0c;可以用于自定义和美化Qt应用程序的用户界面&#xff08;UI&#xff09;。…...

机器学习和深度学习简述

一、人工智能、机器学习、深度学习的关系 近些年人工智能、机器学习和深度学习的概念十分火热&#xff0c;但很多从业者却很难说清它们之间的关系&#xff0c;外行人更是雾里看花。概括来说&#xff0c;人工智能、机器学习和深度学习覆盖的技术范畴是逐层递减的&#xff0c;三…...

diffusion model2 扩散模型的文本信息融合、交叉注意力机制、lora

前言 在上一篇文章中&#xff0c;我们剖析了diffusion model的原理&#xff0c;而在这一篇文章中&#xff0c;我们探讨与扩散模型有关的其他话题&#xff0c;包括扩散模型的unet是如何在推理噪声的过程中&#xff0c;融入文本信息的考量&#xff1f;其原理为交叉注意力机制&am…...

数据结构——二叉树

本章代码仓库&#xff1a;堆、二叉树链式结构 文章目录 &#x1f36d;1. 树&#x1f9c1;1.1 树的概念&#x1f9c1;1.2 树的结构 &#x1f36c;2. 二叉树&#x1f36b;2.1 二叉树的概念&#x1f36b;2.2 特殊的二叉树&#x1f36b;2.3 二叉树的性质&#x1f36b;2.4 二叉树的存…...

架构训练营学习笔记:5-3接口高可用

序 架构决定系统质量上限&#xff0c;代码决定系统质量下限&#xff0c;本节课串一下常见应对措施的框架&#xff0c;细节不太多&#xff0c;侧重对于技术本质有深入了解。 接口高可用整体框架 雪崩效应&#xff1a;请求量超过系统处理能力后导致系统性能螺旋快速下降 链式…...

【笔记】湖仓一体架构演进与发展

https://www.bilibili.com/video/BV1oF411F7rQ/?spm_id_from333.788.recommend_more_video.0&vd_sourcefa36a95b3c3fa4f32dd400f8cabddeaf...

政务云建设与应用解决方案[42页PPT]

导读&#xff1a;原文《政务云建设与应用解决方案[42页PPT]》&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。 完整版领取方式 完整版领取方式&#xff1a; 如需获取完…...

20天突破英语四级高频词汇——第①天

2&#xfeff;0天突破英语四级高频词汇~第一天加油(ง •_•)ง&#x1f4aa; &#x1f433;博主&#xff1a;命运之光 &#x1f308;专栏&#xff1a;英语四级高频词汇速记 &#x1f30c;博主的其他文章&#xff1a;点击进入博主的主页 目录 2&#xfeff;0天突破英语四级…...

【网络基础实战之路】基于MGRE多点协议的实战详解

系列文章传送门&#xff1a; 【网络基础实战之路】设计网络划分的实战详解 【网络基础实战之路】一文弄懂TCP的三次握手与四次断开 【网络基础实战之路】基于MGRE多点协议的实战详解 【网络基础实战之路】基于OSPF协议建立两个MGRE网络的实验详解 PS&#xff1a;本要求基于…...

K8s实战入门(三)

文章目录 3. 实战入门3.1 Namespace3.1.1 测试两个不同的名称空间之间的 Pod 是否连通性 3.2 Pod3.3 Label3.4 Deployment3.5 Service 3. 实战入门 本章节将介绍如何在kubernetes集群中部署一个nginx服务&#xff0c;并且能够对其进行访问。 3.1 Namespace Namespace是kuber…...

Linux-centos花生壳实现内网穿透

Linux-centos花生壳实现内网穿透 官网教程 1.安装花生壳 下载网址 点击复制就可以复制下载命令了 wget "https://dl.oray.com/hsk/linux/phddns_5.2.0_amd64.rpm" -O phddns_5.2.0_amd64.rpm# 下载完成之后会多一个rpm文件 [rootlocalhost HuaSheng]# ls phddns_…...

Jackson类层次结构中的一些应用(Inheritance with Jackson)

Have a look at working with class hierarchies in Jackson. 如何在Jackson中使用类层次结构。 Inclusion of Subtype Information There are two ways to add type information when serializing and deserializing data objects, namely global default typing and per-cl…...

Python求均值、方差、标准偏差SD、相对标准偏差RSD

均值 均值是统计学中最常用的统计量&#xff0c;用来表明资料中各观测值相对集中较多的中心位置。用于反映现象总体的一般水平&#xff0c;或分布的集中趋势。 import numpy as npa [2, 4, 6, 8]print(np.mean(a)) # 均值 print(np.average(a, weights[1, 2, 1, 1])) # 带…...

工厂化循环水产养殖系统:数据驱动,养殖更精准

工厂化循环水产养殖系统解决方案&#xff0c;以物联网感知、智能控制、大数据分析、智能决策为核心&#xff0c;构建“水质精准调控智能投喂生长监测病害报警运维管理循环水处理”全链路闭环&#xff0c;实现高密度、零换水(或微换水)、高产出、低风险的现代化养殖。 通过物联网…...

如何确保Kando在Windows上的安全性?完整代码签名验证指南

如何确保Kando在Windows上的安全性&#xff1f;完整代码签名验证指南 【免费下载链接】kando &#x1f338; Do things with utmost efficiency. 项目地址: https://gitcode.com/gh_mirrors/ka/kando Kando是一款高效的快捷操作工具&#xff0c;通过直观的饼图菜单帮助用…...

3大核心技术深度解析:Windows Defender Control开源项目的架构与实践指南

3大核心技术深度解析&#xff1a;Windows Defender Control开源项目的架构与实践指南 【免费下载链接】defender-control An open-source windows defender manager. Now you can disable windows defender permanently. 项目地址: https://gitcode.com/gh_mirrors/de/defen…...

解放科研效率:用这款开源工具让图表数据提取效率提升80%

解放科研效率&#xff1a;用这款开源工具让图表数据提取效率提升80% 【免费下载链接】WebPlotDigitizer Computer vision assisted tool to extract numerical data from plot images. 项目地址: https://gitcode.com/gh_mirrors/we/WebPlotDigitizer 在科研和工程领域&…...

利用快马平台快速生成ffmpeg视频裁剪与滤镜添加原型

最近在做一个短视频处理的小工具&#xff0c;需要快速验证ffmpeg的视频裁剪和滤镜功能。传统方式要自己搭建环境、查文档、写代码&#xff0c;整个过程特别耗时。后来发现用InsCode(快马)平台可以省去这些麻烦&#xff0c;直接输入需求就能生成可运行的原型代码&#xff0c;特别…...

免费终极指南:使用memtest_vulkan快速检测GPU显存稳定性问题

免费终极指南&#xff1a;使用memtest_vulkan快速检测GPU显存稳定性问题 【免费下载链接】memtest_vulkan Vulkan compute tool for testing video memory stability 项目地址: https://gitcode.com/gh_mirrors/me/memtest_vulkan memtest_vulkan是一款基于Vulkan计算AP…...

26年知网AIGC检测算法大升级,这些变化你知道吗?

有同学在网上反馈&#xff0c;去年下半年写好的论文查重&#xff0c;AI率检测都过了&#xff0c;今年坐等毕业。没想到重新一查内容都变成率红色。评论区很多同学都有类似的情况。 根本原因还是&#xff1a;知网检测算法大升级&#xff0c;AI检测更加严格&#xff01; 今天这篇…...

Unity资源提取工具AssetStudio完全指南:从问题解决到专业应用

Unity资源提取工具AssetStudio完全指南&#xff1a;从问题解决到专业应用 【免费下载链接】AssetStudio AssetStudio - Based on the archived Perfares AssetStudio, I continue Perfares work to keep AssetStudio up-to-date, with support for new Unity versions and addi…...

ChilloutMix模型实战:从零部署到高效生成AI图像

ChilloutMix模型实战&#xff1a;从零部署到高效生成AI图像 【免费下载链接】chilloutmix_NiPrunedFp32Fix 项目地址: https://ai.gitcode.com/hf_mirrors/emilianJR/chilloutmix_NiPrunedFp32Fix ChilloutMix是一个基于Stable Diffusion架构的AI图像生成模型&#xff…...

Hunyuan-MT-7B多场景实践:像素语言传送门在独立游戏开发、字幕生成、文档本地化中的三重应用

Hunyuan-MT-7B多场景实践&#xff1a;像素语言传送门在独立游戏开发、字幕生成、文档本地化中的三重应用 1. 像素语言传送门&#xff1a;当翻译遇见16-bit冒险 在独立游戏开发者的工作台上&#xff0c;一款名为"像素语言传送门"的工具正在改变传统翻译体验。这款基…...