第一题 有效的括号
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;
}
希望雷神给个面试机会吧,许愿许愿~