2020-09-15,小米笔试,java
第一题:字符串有效判断,(,),{,},[,].
有效的括号
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
注意:输入中包含空字符,匹配只匹配左右括号,空字符直接过滤掉就可以
代码只能通过80%
package com;import java.util.Scanner;
import java.util.Stack;public class Main091501 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while (sc.hasNext()){System.out.println(isTrue(sc.next()));}}private static boolean isTrue(String s){Stack stack = new Stack();if (s.length() == 0 || s == null){return true;}for (int i = 0; i < s.length(); i++) {if(s.charAt(i) == '(' || s.charAt(i) == '[' ||s.charAt(i) == '{'){stack.push(s.charAt(i));}else {if (stack.isEmpty()){return false;}if (s.charAt(i) == ')' && (char)stack.pop() != '('){return false;}if (s.charAt(i) == ']' && (char)stack.pop() != '['){return false;}if (s.charAt(i) == '}' && (char)stack.pop() != '{'){return false;}}}return stack.isEmpty();}
}
代码改进:考虑了空字符串
class Solution {public boolean isValid(String s) {int n = s.length();if (n % 2 == 1) {return false;}Map<Character, Character> pairs = new HashMap<Character, Character>() {{put(')', '(');put(']', '[');put('}', '{');}};Deque<Character> stack = new LinkedList<Character>();for (int i = 0; i < n; i++) {char ch = s.charAt(i);if (pairs.containsKey(ch)) {if (stack.isEmpty() || stack.peek() != pairs.get(ch)) {return false;}stack.pop();} else {//考虑了空字符串stack.push(ch);}}return stack.isEmpty();}
}
复杂度分析
时间复杂度:O(n)O(n),其中 nn 是字符串 ss 的长度。
空间复杂度:O(n + |\Sigma|)O(n+∣Σ∣),其中 \SigmaΣ 表示字符集,本题中字符串只包含 66 种括号,|\Sigma| = 6∣Σ∣=6。栈中的字符数量为 O(n)O(n),而哈希映射使用的空间为 O(|\Sigma|)O(∣Σ∣),相加即可得到总空间复杂度。
第二题 去掉重复的字符,只保留第一个
hashmap:
public class Main091502 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String string = sc.next();Map<Character, Integer> map = new HashMap<>();for (int i = 0; i < string.length(); i++) {if(!map.containsKey(string.charAt(i))){System.out.print(string.charAt(i));map.put(string.charAt(i), 1);}}}
}
hashset:
public class Main091502 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String string = sc.next();Set<Character> set = new HashSet<>();for (int i = 0; i < string.length(); i++) {if(!set.contains(string.charAt(i))){System.out.print(string.charAt(i));set.add(string.charAt(i));}}}
}
2020-09-15,小米笔试,java相关推荐
- Scratch 被禁止访问;Linux 内核历史报告2020 等开源之道每周评论2020 09 15
点击上方蓝字,关注开源之道 声明:本文所言论,仅代表适兕个人观点 论文阅读心得与体会 Linux 内核历史报告2020 原文链接:the 2020 Linux Kernel History Repor ...
- 2020.09.15丨细菌真菌基因组测序原理
细菌基因组测序原理 细菌定义: 属于原核生物,无核膜.DNA裸露,分真细菌和古细菌两大类的微生物.是在自然界分布最广.个体数量最多的有机体,是大自然物质循环的主要参与者. 细菌基因组特点: 基因组:一 ...
- 背包问题 2020年小米校招JAVA岗笔试第二题
对于背包问题:例如小偷东西问题 如上图 小偷最多可以带走重量位20.要尽可能带走多的商品. 所以应该设置数组capacity[20+1], 商品itmes [5+1] 其中,capacity[0]=0 ...
- 百度 腾讯 阿里 小米 笔试题目宝典
九月十月百度人搜,阿里巴巴,腾讯华为小米搜狗笔试面试八十题 引言 自发表上一篇文章至今(事实上,上篇文章更新了近3个月之久),blog已经停了3个多月,而在那之前,自开博以来的21个月每月都不曾 ...
- 2020年 第11届 蓝桥杯 C/C++ B组 省赛真题详解及小结【第1场省赛2020.7.5】【Java版】
蓝桥杯 Java B组 省赛真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 注意:部分代码及程序 源自 蓝桥杯 官网视频(历年真题解析) 郑未老师. 2013年 第04届 蓝桥杯 ...
- 2021年小米校招java编程题
2021年小米校招java笔试编程题(AC) 有幸成为今年小米校招二十万分母的一员,小米编程题不算难基本都是板子题.之前力扣周赛也能看出来,一群大佬十几分钟AK. 这次笔试分为单选.多选和两道编程题. ...
- 2018年 第09届 蓝桥杯 Java B组 决赛真题详解及小结
蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...
- 网络安全2020.6.15作业
网路安全2020.6.15作业 Windows的发展路程: Windows1.0是微软1983年发布的,只能用dos来操作 Windows2.0是1987年上市的,增强了键盘和鼠标,加入功能表和对话框 ...
- 亚信科技笔试java
亚信科技笔试java base上海 选择题有java基础.jsp.web.linux.数据结构 1. java的核心包 2. 字符串拼接 3. 实现Runable接口,run方法和start方法 4. ...
- 15分钟用Java平台实现Springboot框架构建后端项目框架
15分钟用Java平台实现Springboot框架构建后端项目框架 文章目录 15分钟用Java平台实现Springboot框架构建后端项目框架 前言 准备工具 1. 新建项目 2.搭建项目框架 3. ...
最新文章
- 视觉SLAM开源算法ORB-SLAM3 原理与代码解析
- 解决MySQL server has gone away
- 知乎:国家何时整治程序员的高薪现象?
- Excel打印区域设置
- Java IO(二)——RandomAccessFile
- Goobuntu:谷歌的内部桌面系统
- sql数字转换为字符_Python|图片转换为字符画^_^
- Algorithm -- 全排列
- 开源的全面胜利背后,那些被遗忘的人性问题
- 怎看沃科斯扫地机器人型号_科沃斯型号区别是什么?
- 用Python来玩微信跳一跳
- 我学Delphi心得及笔记----内存(第七讲)
- ITIL 4讲解:ITIL4的设计框架解析
- 油库蓝牙+北斗RTK人员定位方案解析
- 机器视觉笔记:RANSAC算法以及思想
- C#工厂模式——简单工厂、工厂方法、反射+简单工厂、抽象工厂
- 【歪门邪道】想要敲代码爽,桌面一定要酷炫
- 阿里云网盘不限速,公测可预约了!
- 学java用哪个翻译器好_英语翻译器软件哪个好?用这两款就对了
- mysql导入SQL表变少了