LeetCode刷题(五)

本文探讨了如何判断一个字符串是否为回文串的排列。通过检查字符串中每个字符出现次数的奇偶性,可以确定是否存在回文排列。例如,字符串“tactcoa”可以排列成回文串“tacocat”。
摘要由CSDN通过智能技术生成

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

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

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

示例1:

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

java

class Solution {
    public boolean canPermutePalindrome(String s) {
        char[] arr = s.toCharArray();

        //定义双列集合,存储字符串中字符以及字符出现的次数
        HashMap<Character, Integer> hm = new HashMap<>();

        //遍历字符数组获取每一个字符,并将字符存储在双列集合中
        for(char c: arr) {
            
        //存储过程中要做判断,如果集合中不包含这个键,就将该字符当作键,值为1存储,如果集合中包含这个键,就将值加1存储
                if(!hm.containsKey(c)) {            //如果不包含这个键
                     hm.put(c, 1);
                }
                else{
                hm.put(c, hm.get(c) + 1);
                }
 
        }
        int cot = 0;
 
        //打印双列集合获取字符出现的次数
        for (Character key : hm.keySet()) {         //hm.keySet()代表所有键的集合
            if(hm.get(key)%2!=0){
                cot = cot +1;
            }
        }
        if(cot>1){
            return false;
        }
        else{
            return true;
        }

    }
}

python

class Solution(object):
    def canPermutePalindrome(self, s):
        dicta = {}
        for i in s:
            dicta[i]=s.count(i)
        cot = 0
        for value in dicta.values():
            if value%2!=0:
                cot=cot+1
        if cot>1:
            return False
        else:
            return True

基本思路就是判断字符串中每个字符出现的次数如果都是偶数,就返回true,如果有一个不是偶数也是true,超过一个就是false。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值