【力扣】面试题 01.04. 回文排列

一、题目表述

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

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

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

示例1:

输入:"tactcoa"

输出:true(排列有"tacocat"、"atcocta",等等)

二、代码

java 复制代码
class Solution {
    public boolean canPermutePalindrome(String s) {
        HashMap<Character,Integer> hashMap = new HashMap<>();
        for (int i = 0; i < s.length(); i++) {
            //getOrDefault,获取指定key的value,如果找不到就返回默认值
            hashMap.put(s.charAt(i),hashMap.getOrDefault(s.charAt(i),0)+1);
        }
        //记录有多少单个的字符
        int odd =  0;
        for(int val : hashMap.values()){
            if(val % 2 == 1){
                ++odd;
                if(odd>1){
                    return false;
                }
            }
        }
        return true;


    }
}

三、笔记反思

1、判断某字符串是否为某个回文串的排列之一,核心逻辑:最多只能有一个字符出现奇数次

2、使用 HashMap<Character, Integer> 存储每个字符的出现次数。

3、getOrDefault(key, defaultValue) 方法:若 key 存在,返回对应值;否则返回默认值 defaultValue。

相关推荐
allnlei2 小时前
s6-overlay - 装在 Docker 容器里的轻量级管家
java·docker·容器
彧azz7 小时前
图的存储结构详解:邻接矩阵的原理、实现与应用
开发语言·数据结构·学习·php
IT_Octopus7 小时前
IntelliJ 本地日志路径自定义:`-DLOG_PATH=./logs` 为什么总“不听话“
java·log4j·intellij-idea
长征coder8 小时前
【无标题】
java·性能优化
新时代牛马9 小时前
PCI与PCIe 硬件原理、配置空间/BAR 与 Linux 驱动完整篇:从 LTSSM、TLP 到 ECAM 与probe
java·linux·服务器
Bs_MoneyMagnet9 小时前
基于springboot+vue的医疗健康便民服务平台的设计与实现 源码+文档
java·vue.js·spring boot·后端·spring
sunshine22 girl10 小时前
Java学习一 环境配置2 Idea的入门使用和maven配置,项目启动脚本配置
java·maven
有点。10 小时前
*C++哈夫曼树与哈夫曼编码
java·c++·servlet
CRMEB系统商城11 小时前
CRMEB标准版系统(Java)v3.1正式发布
java·spring·微信小程序·php·教育电商
写后端的胖头鱼11 小时前
【高频面试题】Java 基础类型 + 包装类 + String 互相转换
java·开发语言