文巾解题 面试题 01.04. 回文排列
1 题目描述
2 解题思路
2.1 哈希表
创建一个哈希表,记录每个元素出现的次数。如果出现次数为奇数的元素只有一个或者没有,那么就是一个回文排列
class Solution:def canPermutePalindrome(self, s: str) -> bool:d=dict()for i in s:if(i in d):d[i]+=1else:d[i]=1flag=0for i in d.values():if(i%2==1 and flag==0):flag=1elif(i%2==1 and flag==1):return Falsereturn True
2.2 集合
建立一个集合(列表也可以),如果元素在集合中,将元素删去,否则将元素加入集合中。
class Solution:def canPermutePalindrome(self, s: str) -> bool:s1=set()for i in s:if(i in s1):s1.remove(i)else:s1.add(i)if(len(s1)>=2):return Falsereturn True
2.3 位运算
每一个元素代表了一位数字的0或者1(这一位数字是1向左移动 这个元素对应的ascii码位后的结果),讲不通的元素对应的数字异或在一块,那么相同的数字就会变成0.。最后判断最终结果的数字是不是只有一个1或者全是0.
判断是不是只有一个1可以用布莱恩-科尼根算法(文巾解题 461. 汉明距离_UQI-LIUWJ的博客-CSDN博客)
class Solution:def canPermutePalindrome(self, s: str) -> bool:l=len(s)d=dict()for i in s:if(i in d):d[i]+=1else:d[i]=1if(l%2==0):for i in d.values():if(i%2==1):return Falseelse:flag=0for i in d.values():if(i%2==1 and flag==0):flag=1elif(i%2==1 and flag==1):return Falsereturn True
文巾解题 面试题 01.04. 回文排列相关推荐
- 面试题 01.04. 回文排列
面试题 01.04. 回文排列 给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一. 回文串是指正反两个方向都一样的单词或短语.排列是指字母的重新排列. 回文串不一定是字典当中的单词. 示例 ...
- 程序员面试金典 - 面试题 01.04. 回文排列(哈希map)
1. 题目 给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一. 回文串是指正反两个方向都一样的单词或短语.排列是指字母的重新排列. 回文串不一定是字典当中的单词. 示例1: 输入:&quo ...
- 编写函数判断一个数是否是回文数_程序员面试金典 - 面试题 01.04. 回文排列
题目难度: 简单 原题链接 题目描述 给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一. 回文串是指正反两个方向都一样的单词或短语.排列是指字母的重新排列. 回文串不一定是字典当中的单词. ...
- 文巾解题 面试题 01.06. 字符串压缩
1 题目描述 2 解题思路 也很简单,从头到尾遍历一遍即可,先建立一个表示出现次数的字符串tmp,然后返回tmp和S中短的那个 时间复杂度 O(n),空间复杂度O(n) class Solution: ...
- 文巾解题 面试题 01.03. URL化
1 题目描述 2 解题思路 class Solution:def replaceSpaces(self, S: str, length: int) -> str:S=S[:length].rep ...
- 文巾解题 面试题 01.02. 判定是否互为字符重排
1 题目描述 2 解题思路 2.1 replace 对每一个在s1中的字符,如果s2中没有,那么说明两个不匹配,返回false:如果s2中有,那么将s2中的一个这个字符换成'' 如果s1全部遍历完了, ...
- 文巾解题 面试题 01.01. 判定字符是否唯一
1 题目描述 2 解题思路 2.1 set lass Solution:def isUnique(self, astr: str) -> bool:l1=len(astr)l2=len(set( ...
- 文巾解题 面试题 17.10. 主要元素
1 题目描述 2 解题思路 因为是O(N)的时间复杂度和O(1)的空间复杂度,所以想到的是Boyer-Moore 投票算法.这个算法的原理可见:算法整理:Boyer-Moore 投票算法_刘文巾的博客 ...
- 文巾解题 面试题 03.06. 动物收容所
1 题目描述 2 解题思路 这题很简单,顺着思路写就ok了 class AnimalShelf:def __init__(self):self.dog_list=[]self.cat_list=[]s ...
最新文章
- 深入浅出JVM的锁优化案例
- IDEA 显示类结构图
- I、Q 通道幅相不平衡的影响及改善
- centos7+ docker1.12 实践部署docker及配置direct_lvm
- ABAP中的Table Control编程
- 35 CO配置-控制-产品成本控制-成本对象控制-期末结算-定义在产品和废品的评估变式 (目标成本)
- juery-轮播图-原理与实现
- HttpClient-----待补充
- 宾夕法尼亚在线计算机硕士,申请访谈:宾夕法尼亚大学(Upenn)计算机科学(CS)的录取攻略...
- 马尔科夫随机过程的理解
- React [Umi] history(API) 路由监听
- linux下载并安装JDK流程
- 记录mikrotik路由器的折腾过程
- 1、系统需求分析与可行性分析(System Requirement Analysis and Feasibility Analysis)
- fastlane php,fastlane安装与初体验
- ModelSim illegal reference to net “***“ 报错问题解决
- 3D游戏编程与设计作业10
- Java实现 LeetCode 838 推多米诺(暴力模拟)
- 5个方法将不带www的根域名301重定向到www主域名
- Java BufferedWriter.write()具有什么功能呢?
热门文章
- NHibernate应用二:第一个NHibernate程序
- 开的什么源?——第三篇:草根创业
- MSP430学习笔记6-动态数码管的显示
- [导入]php 安全基础 附录C. 加密
- 中国人民大学_《组织行为学》_16.重塑组织模块导论
- php如何获取js文本框内的内容,js获取input标签的输入值(实例代码)
- python np fft_Python的武器库05:numpy模块(下)
- python给太阳花添加茎叶_python_bloom--循环语句练习
- mysql 存储过程 排序_更改MySQL存储过程“数据库排序规则”的名称
- 剪切工具怎么用_原创度检测工具是怎么用的?优质的内容更容易获得平台推荐...