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. 回文排列相关推荐

  1. 面试题 01.04. 回文排列

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

  2. 程序员面试金典 - 面试题 01.04. 回文排列(哈希map)

    1. 题目 给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一. 回文串是指正反两个方向都一样的单词或短语.排列是指字母的重新排列. 回文串不一定是字典当中的单词. 示例1: 输入:&quo ...

  3. 编写函数判断一个数是否是回文数_程序员面试金典 - 面试题 01.04. 回文排列

    题目难度: 简单 原题链接 题目描述 给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一. 回文串是指正反两个方向都一样的单词或短语.排列是指字母的重新排列. 回文串不一定是字典当中的单词. ...

  4. 文巾解题 面试题 01.06. 字符串压缩

    1 题目描述 2 解题思路 也很简单,从头到尾遍历一遍即可,先建立一个表示出现次数的字符串tmp,然后返回tmp和S中短的那个 时间复杂度 O(n),空间复杂度O(n) class Solution: ...

  5. 文巾解题 面试题 01.03. URL化

    1 题目描述 2 解题思路 class Solution:def replaceSpaces(self, S: str, length: int) -> str:S=S[:length].rep ...

  6. 文巾解题 面试题 01.02. 判定是否互为字符重排

    1 题目描述 2 解题思路 2.1 replace 对每一个在s1中的字符,如果s2中没有,那么说明两个不匹配,返回false:如果s2中有,那么将s2中的一个这个字符换成'' 如果s1全部遍历完了, ...

  7. 文巾解题 面试题 01.01. 判定字符是否唯一

    1 题目描述 2 解题思路 2.1 set lass Solution:def isUnique(self, astr: str) -> bool:l1=len(astr)l2=len(set( ...

  8. 文巾解题 面试题 17.10. 主要元素

    1 题目描述 2 解题思路 因为是O(N)的时间复杂度和O(1)的空间复杂度,所以想到的是Boyer-Moore 投票算法.这个算法的原理可见:算法整理:Boyer-Moore 投票算法_刘文巾的博客 ...

  9. 文巾解题 面试题 03.06. 动物收容所

    1 题目描述 2 解题思路 这题很简单,顺着思路写就ok了 class AnimalShelf:def __init__(self):self.dog_list=[]self.cat_list=[]s ...

最新文章

  1. 深入浅出JVM的锁优化案例
  2. IDEA 显示类结构图
  3. I、Q 通道幅相不平衡的影响及改善
  4. centos7+ docker1.12 实践部署docker及配置direct_lvm
  5. ABAP中的Table Control编程
  6. 35 CO配置-控制-产品成本控制-成本对象控制-期末结算-定义在产品和废品的评估变式 (目标成本)
  7. juery-轮播图-原理与实现
  8. HttpClient-----待补充
  9. 宾夕法尼亚在线计算机硕士,申请访谈:宾夕法尼亚大学(Upenn)计算机科学(CS)的录取攻略...
  10. 马尔科夫随机过程的理解
  11. React [Umi] history(API) 路由监听
  12. linux下载并安装JDK流程
  13. 记录mikrotik路由器的折腾过程
  14. 1、系统需求分析与可行性分析(System Requirement Analysis and Feasibility Analysis)
  15. fastlane php,fastlane安装与初体验
  16. ModelSim illegal reference to net “***“ 报错问题解决
  17. 3D游戏编程与设计作业10
  18. Java实现 LeetCode 838 推多米诺(暴力模拟)
  19. 5个方法将不带www的根域名301重定向到www主域名
  20. Java BufferedWriter.write()具有什么功能呢?

热门文章

  1. NHibernate应用二:第一个NHibernate程序
  2. 开的什么源?——第三篇:草根创业
  3. MSP430学习笔记6-动态数码管的显示
  4. [导入]php 安全基础 附录C. 加密
  5. 中国人民大学_《组织行为学》_16.重塑组织模块导论
  6. php如何获取js文本框内的内容,js获取input标签的输入值(实例代码)
  7. python np fft_Python的武器库05:numpy模块(下)
  8. python给太阳花添加茎叶_python_bloom--循环语句练习
  9. mysql 存储过程 排序_更改MySQL存储过程“数据库排序规则”的名称
  10. 剪切工具怎么用_原创度检测工具是怎么用的?优质的内容更容易获得平台推荐...