409.最长回文串(数学算法)
题目给定一个包含大写字母和小写字母的字符串 s 返回 通过这些字母构造成的 最长的 回文串 的长度。在构造过程中请注意 区分大小写 。比如 Aa 不能当做一个回文字符串。题目链接如下https://leetcode.cn/problems/longest-palindrome?envTypeproblem-list-v2envIdgreedy解题思路1.记录各字母数量根据对称性偶数直接相加计数奇数减一后计数2.判断是否有字母数量为奇数若至少有一个则可插入字符串中间即总数量加一若字母都为偶数数量则不做加工直接输出所用代码//贺育婷HYT import java.util.HashMap; import java.util.Map; public class Test02{ public void e(String s){ //新建一个HashMap相当于一个键值对工具统计每个字符出现多少次 //前面Character为字母后面Integer为对应数量 MapCharacter,Integer countMapnew HashMap(); //第一个循环记录字母数量并存入新建的countMap键值对中 for(char c:s.toCharArray()){ countMap.put(c,countMap.getOrDefault(c,0)1); } int sum0; boolean hasOddfalse; //按照对称性以及上述规律进行累加计数 for(int count:countMap.values()){ if(count%2!0){ sumcount-1; hasOddtrue; }else { sumcount; } } //增加额外判断条件是否有奇数量的字母 if(hasOdd){ sum1; } System.out.println(sum); } public static void main(String[] args) { Test02 tnew Test02(); t.e(accccddb); } }涉及方法1.Map.put()map.put(键key, 值value);(1) 作用向 HashMap 中存入一组 键值对键唯一不重复值可以重复(2)两大特性键不存在 →新增数据键已存在 →覆盖旧值2.Map.getOrDefault()map.getOrDefault(键, 默认值);1作用根据key 键取值集合里有这个 key → 返回对应的value 值集合里没有这个 key → 返回你写的默认值2和普通 get () 区别map.get(键)找不到键 → 返回 nullmap.getOrDefault(键,默认值)找不到 → 返回你指定的数字3.Map.values()(1)作用把 Map 里所有的 “值数字” 全部取出来变成一个集合给你遍历它只拿所有的值不要键//拿到的结果是 [1, 1, 4, 2]2与其他取数方法的区别map.keySet()拿所有字符map.values()拿所有次数map.entrySet()全都拿
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2625116.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!