小米笔试(09-15)
第一题 有效的括号
leetcode原题,但我一直80%,后面发现是可以多行输入的,猝。。。
public static void main(String[] args) { // TODO Auto-generated method stub // 定义辅助栈 Stack<Character> stack = new Stack<>(); Scanner scanner = new Scanner(System.in); // 需要处理为多行输入输出 String string = scanner.nextLine(); boolean flag = false; for(int i = 0; i < string.length(); i++) { if( string.charAt(i) == '(') stack.push(')'); else if( string.charAt(i) == '[') stack.push(']'); else if (string.charAt(i) == '{') { stack.push('}'); } else if (string.charAt(i) == ' '){ continue; } else if(stack.empty() || string.charAt(i) != stack.pop()) { flag = true; break; } } scanner.close(); if(!stack.empty() || flag) System.out.println("false"); else System.out.println("true"); }
第二题 去掉重复的字符,只保留第一个
简单,使用HashMap搞定
package zr.xiaomi; import java.util.HashMap; import java.util.Map; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String string = scanner.nextLine(); Map<Character, Integer> map = new HashMap<Character, Integer>(); 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); } } scanner.close(); } }其实使用HashSet就行了,可能是HashMap用得太多,一上来就想到HashMap
package zr.xiaomi; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Scanner; import java.util.Set; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String string = scanner.nextLine(); 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)); } } scanner.close(); } }其实C++里面的list也可以搞定,更easy。
int main(int argc, char* argv[]) { string s; getchar(); getline(cin, s); list<char> mylist; for(int i = 0; i < s.size(); i++) mylist.push_back(s[i]); // 去重(从右边开始,保留第一个) mylist.unique(); for(auto it = mylist.begin(); it != mylist.end(); it++){ printf("%c", *it); } return 0; }
希望军哥给个面试机会吧,许愿许愿~