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

LeetCode 面试题 01.04. 回文排列

文章目录

  • 一、题目
  • 二、C# 题解

一、题目

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

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

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

  点击此处跳转题目。

示例1:

输入:“tactcoa”
输出:true(排列有"tacocat"、“atcocta”,等等)

二、C# 题解

  回文字符串的排列,即字符串中每个字符出现的次数全为偶数,或最多有 1 个奇数。因此用 num 记录出现次数为奇数的个数,遍历更新即可。

  这里题目没有明确字符串是否为英文字母,因此 map 大小定为 128。

public class Solution {public bool CanPermutePalindrome(string s) {int[] map = new int[128];     // map 记录表int num = 0;                  // 记录奇数次出现字符的个数for (int i = 0; i < s.Length; i++) {int index = (int)(s[i]);  // 获取字符的记录位置if (map[index] == 0) { // 出现偶数次,更新记录和 nummap[index]++;num++;}else {                    // 出现奇数次,同上map[index]--;num--;}}return num < 2;               // 奇数次出现字符的个数不能 > 1}
}
  • 时间复杂度: O ( n ) O(n) O(n)

  • 空间复杂度: O ( 1 ) O(1) O(1),取决于出现字符的种类多少。

http://www.lryc.cn/news/132545.html

相关文章:

  • CentOS 7 安装MySQL8.0.33
  • OpenCV(二)——图像基本处理(四)
  • 11.小程序的配置项
  • 一文科普,配资门户网是什么?
  • 编写一个俄罗斯方块
  • 认识容器,走进Docker
  • 初始web
  • JVM中释放内存的三种方法
  • 图床项目进度(一)——UI首页
  • vue3父子组件相互调用方法详解
  • Java之接口
  • QT学习笔记-QT5.15编译及安装谷歌拼音输入法(QtInputMethod_GooglePinyin)
  • python 使用 pdf2image 库将PDF转换为图片
  • kubernetes(namespace、pod、deployment、service、ingress)
  • 深度学习loss变为nan的问题
  • 音视频 ffplay命令-主要选项
  • 深入浅出Pytorch函数——torch.nn.init.dirac_
  • [Go版]算法通关村第十三关青铜——数字数学问题之统计问题、溢出问题、进制问题
  • GPT-4一纸重洗:从97.6%降至2.4%的巨大挑战
  • 大数据Flink学习圣经:一本书实现大数据Flink自由
  • 什么是微服务?
  • 【C++入门到精通】C++入门 —— 容器适配器、stack和queue(STL)
  • 系统架构设计专业技能 · 软件工程之需求工程
  • 2023国赛数学建模E题思路模型代码 高教社杯
  • Baumer工业相机堡盟工业相机如何通过BGAPISDK设置相机的Bufferlist序列(C++)
  • 从 Ansible Galaxy 使用角色
  • ROS与STM32通信(二)-pyserial
  • [oneAPI] 使用Bert进行中文文本分类
  • 【数据治理】什么是数据库归档
  • AI代码补全 案例 - 阿里云智能编码插件Cosy