第一题:字符串有效判断,(,),{,},[,].

有效的括号
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。

有效字符串需满足:

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。

注意:输入中包含空字符,匹配只匹配左右括号,空字符直接过滤掉就可以
代码只能通过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相关推荐

  1. Scratch 被禁止访问;Linux 内核历史报告2020 等开源之道每周评论2020 09 15

    点击上方蓝字,关注开源之道 声明:本文所言论,仅代表适兕个人观点 论文阅读心得与体会 Linux 内核历史报告2020 原文链接:the 2020 Linux Kernel History Repor ...

  2. 2020.09.15丨细菌真菌基因组测序原理

    细菌基因组测序原理 细菌定义: 属于原核生物,无核膜.DNA裸露,分真细菌和古细菌两大类的微生物.是在自然界分布最广.个体数量最多的有机体,是大自然物质循环的主要参与者. 细菌基因组特点: 基因组:一 ...

  3. 背包问题 2020年小米校招JAVA岗笔试第二题

    对于背包问题:例如小偷东西问题 如上图 小偷最多可以带走重量位20.要尽可能带走多的商品. 所以应该设置数组capacity[20+1], 商品itmes [5+1] 其中,capacity[0]=0 ...

  4. 百度 腾讯 阿里 小米 笔试题目宝典

     九月十月百度人搜,阿里巴巴,腾讯华为小米搜狗笔试面试八十题 引言 自发表上一篇文章至今(事实上,上篇文章更新了近3个月之久),blog已经停了3个多月,而在那之前,自开博以来的21个月每月都不曾 ...

  5. 2020年 第11届 蓝桥杯 C/C++ B组 省赛真题详解及小结【第1场省赛2020.7.5】【Java版】

    蓝桥杯 Java B组 省赛真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 注意:部分代码及程序 源自 蓝桥杯 官网视频(历年真题解析) 郑未老师. 2013年 第04届 蓝桥杯 ...

  6. 2021年小米校招java编程题

    2021年小米校招java笔试编程题(AC) 有幸成为今年小米校招二十万分母的一员,小米编程题不算难基本都是板子题.之前力扣周赛也能看出来,一群大佬十几分钟AK. 这次笔试分为单选.多选和两道编程题. ...

  7. 2018年 第09届 蓝桥杯 Java B组 决赛真题详解及小结

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

  8. 网络安全2020.6.15作业

    网路安全2020.6.15作业 Windows的发展路程: Windows1.0是微软1983年发布的,只能用dos来操作 Windows2.0是1987年上市的,增强了键盘和鼠标,加入功能表和对话框 ...

  9. 亚信科技笔试java

    亚信科技笔试java base上海 选择题有java基础.jsp.web.linux.数据结构 1. java的核心包 2. 字符串拼接 3. 实现Runable接口,run方法和start方法 4. ...

  10. 15分钟用Java平台实现Springboot框架构建后端项目框架

    15分钟用Java平台实现Springboot框架构建后端项目框架 文章目录 15分钟用Java平台实现Springboot框架构建后端项目框架 前言 准备工具 1. 新建项目 2.搭建项目框架 3. ...

最新文章

  1. 视觉SLAM开源算法ORB-SLAM3 原理与代码解析
  2. 解决MySQL server has gone away
  3. 知乎:国家何时整治程序员的高薪现象?
  4. Excel打印区域设置
  5. Java IO(二)——RandomAccessFile
  6. Goobuntu:谷歌的内部桌面系统
  7. sql数字转换为字符_Python|图片转换为字符画^_^
  8. Algorithm -- 全排列
  9. 开源的全面胜利背后,那些被遗忘的人性问题
  10. 怎看沃科斯扫地机器人型号_科沃斯型号区别是什么?
  11. 用Python来玩微信跳一跳
  12. 我学Delphi心得及笔记----内存(第七讲)
  13. ITIL 4讲解:ITIL4的设计框架解析
  14. 油库蓝牙+北斗RTK人员定位方案解析
  15. 机器视觉笔记:RANSAC算法以及思想
  16. C#工厂模式——简单工厂、工厂方法、反射+简单工厂、抽象工厂
  17. 【歪门邪道】想要敲代码爽,桌面一定要酷炫
  18. 阿里云网盘不限速,公测可预约了!
  19. 学java用哪个翻译器好_英语翻译器软件哪个好?用这两款就对了
  20. mysql导入SQL表变少了

热门文章

  1. wget下载到一半断了,重连方法
  2. 这家200多年历史的中华老字号,是如何赢得今年快手中秋月饼品牌冠军的?
  3. 唯美雪景雪花飘落代码,附效果演示
  4. 初尝vue-element-admin
  5. Python中的字符串下标
  6. 微信网页开发wx.getLocation在安卓手机上的一个坑
  7. 微信网页开发wx.chooseImage多图上传、预览(已解决)
  8. 分析:大数据失败案例及背后原因!
  9. 我对软件应聘学生的建议
  10. 【数据库设计】学籍管理的数据库系统