【力扣】面试题 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。

相关推荐
All for pursuit.11 小时前
【并查集-2】399.除法求值
数据结构·c++·算法·leetcode
鱼宵12 小时前
LangChain4j 结构化输出:让模型吐出 Java 对象,JSON 不再手写解析
java·开发语言·json·langchain4j
HSunR12 小时前
ruoyi 若依 自定义注解 参数校验
java·前端·数据库
Wang's Blog12 小时前
Java 项目部署之 Docker工具快速入门: Docker 是什么以及它如何解决部署环境问题
java·开发语言·docker
老木避暑研究所12 小时前
从原始数据到洞察:一次完整的避暑房环境数据采集、清洗与可视化分析
java·开发语言
Nil20813 小时前
leetcode 416分割等和子集
算法·leetcode·职场和发展
前端 贾公子13 小时前
LangGraph == 图的状态(State)管理 (上)
java·开发语言·数据库
huaweichenai13 小时前
spring boot 实现file文件上传
java·spring boot·后端
VX_bysjlw98513 小时前
数码设备销售网站设计与实现39138-计算机毕设原创(免费领源码+带部署教程)
java·vue.js·spring boot·mysql·tomcat·mybatis·idea