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

相关推荐
天天摸鱼的java工程师9 分钟前
如何设计一个用户签到系统,支持连续签到统计?
java·后端
海海不掉头发28 分钟前
【2025 年】软件体系结构考试试卷-期末考试
java·服务器·软件体系结构
智_永无止境40 分钟前
集合的处理:JDK和Guava孰强孰弱?
java·jdk·集合·guava
matdodo1 小时前
【大数据】java API 进行集群间distCP 报错unresolvedAddressException
java·大数据·开发语言
Java技术小馆1 小时前
利用DeepWiki高效阅读项目源码
java·后端·面试
liujing102329291 小时前
Day05_数据结构大项目作业20250620
数据结构
int型码农1 小时前
数据结构第八章(六)-置换选择排序和最佳归并树
java·c语言·数据结构·算法·排序算法
@我漫长的孤独流浪1 小时前
数据结构----排序(3)
数据结构·c++·算法
小道仙972 小时前
gitlab对接,gitlabRestApi,gitlab4j-api
java·git·gitlab
oioihoii2 小时前
C++11 GC Interface:从入门到精通
java·jvm·c++