【2月每日一题】leetcode Java + c++版 (6 完结)
目录
2325. 解密消息 - 简单ac
1、哈希表
2、数组
2331. 计算布尔二叉树的值 - dfs ac
1233. 删除子文件夹 - 排序
2341. 数组能形成多少数对 - 简单ac
2347. 最好的扑克手牌 - 哈希表计数
2363. 合并相似的物品 - 哈希表
2325. 解密消息 - 简单ac
2325. 解密消息
1、哈希表
class Solution {public String decodeMessage(String key, String message) {Map<Character,Character> mp=new HashMap<>();int cnt=0;for(int i=0;i<key.length();i++){char c=key.charAt(i);if(c!=' ') {char x=(char)(cnt%26+'a');if(!mp.containsKey(c)) {mp.put(c,x);cnt++;}}}/* for(Map.Entry<Character,Character> x:mp.entrySet()){System.out.println(x.getKey()+" "+x.getValue());}*/StringBuilder res=new StringBuilder();for(char c:message.toCharArray()){if(c==' ') res.append(c);else res.append(mp.get(c));}return res.toString();}
}
class Solution {
public:string decodeMessage(string key, string message) {unordered_map<char,char> mp;int cnt=0;for(char x:key){if(x!=' ')if(!mp.count(x)){mp[x]=(char)(cnt%26+'a');cnt++;}}string res;for(char c:message){if(c==' ') res+=c;else res+=mp[c];}return res;}
};
2、数组
class Solution {
public:string decodeMessage(string key, string message) {char mp[26]{};char i='a';for(char c:key){if(c!=' '&&!mp[c-'a']) mp[c-'a']=i++;}string res;for(char x:message)if(x==' ') res+=x;else res+=mp[x-'a'];return res;}
};
2331. 计算布尔二叉树的值 - dfs ac
2331. 计算布尔二叉树的值
class Solution {public boolean evaluateTree(TreeNode root) {return dfs(root);}public boolean dfs(TreeNode rt){if(rt.left==null&&rt.right==null) return rt.val==1; //如果是叶子节点 返回值if(rt.val==2) return dfs(rt.left)|dfs(rt.right);else return dfs(rt.left)&dfs(rt.right);}
}
1233. 删除子文件夹 - 排序
1233. 删除子文件夹
思路:
先按字典序排序
如果f[i]不满足放f[i-1]的前缀条件,则将f[i]存入res中
因为排过序,所以经过判断后放进res的都不可能是子文件
因此每次从res尾部取出字符串作为前缀
前缀条件:
- 字符串长度>前缀长度
- 前缀字符相同
- 第一个不同的字符是' / '
class Solution {public List<String> removeSubfolders(String[] f) {Arrays.sort(f);int n=f.length;List<String> res=new ArrayList<>();res.add(f[0]);for(int i=1;i<n;i++){int prelen=res.get(res.size()-1).length(); //res最后一个字符串的长度if(!(f[i].length()>prelen&&res.get(res.size()-1).substring(0,prelen).equals(f[i].substring(0,prelen))&&f[i].charAt(prelen)=='/')) res.add(f[i]);}return res;}
}
class Solution {
public:vector<string> removeSubfolders(vector<string>& f) {sort(f.begin(),f.end());vector<string> res;res.push_back(f[0]);for(int i=1;i<f.size();i++){string pre=res.back();if(!(f[i].size()>pre.size()&&f[i].substr(0,pre.size())==pre&&f[i][pre.size()]=='/'))res.push_back(f[i]);}return res;}
};
class Solution {public List<String> removeSubfolders(String[] f) {Arrays.sort(f);List<String> res=new ArrayList<>();String pre="//";for(String x:f){if(!x.startsWith(pre)){res.add(x);pre=x+"/";} }return res;}
}
2341. 数组能形成多少数对 - 简单ac
2341. 数组能形成多少数对
class Solution {public int[] numberOfPairs(int[] nums) {int[] res=new int[2];int[] cnt=new int[101];for(int x:nums) cnt[x]++;for(int i=0;i<101;i++){if(cnt[i]%2==1) res[1]+=cnt[i]%2;res[0]+=cnt[i]/2;}return res;}
}
2347. 最好的扑克手牌 - 哈希表计数
力扣
class Solution {public String bestHand(int[] ranks, char[] suits) {boolean f=true;for(int i=1;i<5;i++)if(suits[i]!=suits[i-1]){f=false;break;}if(f) return "Flush";int[] cnt=new int[14];boolean p=false;for(int x:ranks){cnt[x]++;if(cnt[x]==3) return "Three of a Kind";p=p||cnt[x]==2;}return p? "Pair":"High Card";}
}
2363. 合并相似的物品 - 哈希表
2363. 合并相似的物品
class Solution {public List<List<Integer>> mergeSimilarItems(int[][] items1, int[][] items2) {List<List<Integer>> res=new ArrayList<>();TreeMap<Integer,Integer> mp=new TreeMap<>();for(int[] x:items1) mp.put(x[0],x[1]);for(int[] x:items2) {mp.put(x[0],mp.getOrDefault(x[0],0)+x[1]);}for(Map.Entry<Integer,Integer> x:mp.entrySet()){List<Integer> list=new ArrayList<>();list.add(x.getKey());list.add(x.getValue());res.add(list);}return res;}
}
【2月每日一题】leetcode Java + c++版 (6 完结)相关推荐
- 【LeetCode】2022 7月 每日一题
[LeetCode]2022 7月 每日一题 前言 七月太忙了,又是项目又是练车又是各种比赛.大概有10天的每日一题没有当天写完(虽然后面补上了). 将每日一题的所有思路记录在这里分享一下. 7.1 ...
- 【1月每日一题】leetcode Java + c++版 (12 完结)
目录 2351.第一个出现两次的字母 2042. 检查句子中的数字是否递增 - 字符串模拟 1.c++ 纯模拟 2.c++ stringstream 分隔法 3.java split 2185. 统计 ...
- 每日一题 leetcode 997. 找到小镇的法官 java
class Solution {public int findJudge(int n, int[][] trust) {if(trust.length==0){if(n==1) return 1;el ...
- [剑指offer]面试题第[48]题[Leetcode][JAVA][第3题][无重复字符的最长字串][滑动窗口][HashSet/Map]
[问题描述][第3题][无重复字符的最长字串] 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度.示例 1:输入: "abcabcbb" 输出: 3 解释: 因为无重 ...
- [剑指offer]面试题第[67]题[Leetcode][JAVA][第8题] 字符串转换整数 (atoi)[字符串]
[问题描述] 请你来实现一个 atoi 函数,使其能将字符串转换成整数.首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止.接下来的转化规则如下:如果第一个非空字符为正或者 ...
- 每日一题 -- LeetCode (十六)
JavaScript / TypeScript for LeetCode 当前进程: 开始时间:2020.6.27 结束时间:undefined GitHub仓库:https://github.com ...
- Java防止Xss注入json_每日一题(java篇) 如何防止xss注入
1.XssAndSqlHttpServletRequestWrapper 类: import java.util.regex.Pattern; import javax.servlet.http.Ht ...
- [剑指offer]面试题第[58]题[Leetcode][JAVA][第151题][翻转单词][字符串常用函数总结]
[问题描述] 给定一个字符串,逐个翻转字符串中的每个单词.示例 1: 输入: "the sky is blue" 输出: "blue is sky the" [ ...
- java题霸_牛客题霸每日一题 + NC50 + Java题解
import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * } */ publi ...
最新文章
- 软件开发经验总结(一)细节决定软件的成败
- 谢文睿:西瓜书 + 南瓜书 吃瓜系列 9. 集成学习(上)
- 重磅!Elasticsearch 8 正式发布!
- 「最新」《美国人工智能未来20年研究路线图》
- 2021银川Problem D. Farm(不保证正确性)
- Java面向对象(19)--抽象类与抽象方法abstract
- 一、Insertion sort
- tree方法php,jsTree详细使用说明
- 加密解密学习--基本概念拾掇
- html无限弹窗关不掉,使用cmd命令时出现无限弹窗的故障如何终止
- java postgresql jdbc驱动 下载,PostgreSQL的JDBC驱动和URL
- 文件对比软件Beyond Compare提示文件禁止编辑的解决方法
- 《非暴力沟通》- 使人情意相通的沟通方式
- 云计算云存储的一些基本概念
- 在html5中,用于获得用户当前位置的方法
- 【微机原理与接口 4】—— 寻址方法与指令系统 1(16位寻址方式解析)
- 蓝桥杯单片机01——74HC138与74HC573
- wear手表软件合集_如何找出正在使用Android Wear手表电池的电池
- 对于计算机专业的个人理解
- 一篇文章入门Mysql