第一题
Topic source第二题。。。
import java.util.*;
public class Main {
public static void main(String[] args) {
String exp = "1 + 9 * (9 - 5)";
SuffixExpression se = compile(exp);
int result = se.execute();
System.out.println(exp + " = " + result + " " + (result == 1 + 9 * (9 - 5) ? "Yes" : "No"));
}
static SuffixExpression compile(String exp) {
Deque<Character> stack = new LinkedList<>();
Deque<Character> stack2 = new LinkedList<>();
char[] arr = exp.toCharArray();
for(char c : arr){
if( c >= 48 && c <= 57 ){
stack2.push(c);
};
}
for(char c : arr){
if( c == '+' || c == '-' || c == '*' || c == '/' ){
stack.push(c);
};
}
return new SuffixExpression(stack2,stack);
}
}
class SuffixExpression {
Deque<Character> NumberStack = new LinkedList<>();
Deque<Character> CharStack = new LinkedList<>();
public SuffixExpression(Deque<Character> NumberStack,Deque<Character> CharStack){
this.NumberStack = NumberStack;
this.CharStack = CharStack;
System.out.println(NumberStack);
}
int execute() {
while(NumberStack.size() >= 2 && CharStack.size() > 0){
int i = NumberStack.pop();
int j = NumberStack.pop();
int k= CharStack.pop();
int temp=0;
switch(k){
case 43:temp = (j-'0')+(i-'0');break;
case 45:temp = (j-'0')-(i-'0');break;
case 42:temp = (j-'0')*(i-'0');break;
case 47:temp = (j-'0')/(i-'0');break;
}
NumberStack.push((char)(temp+'0'));
}
return NumberStack.pop()-'0';
}
}
- 1
Lumen.
static String toHex(int n) {
Deque<Integer> stack = new LinkedList<>();
int i;
String hex="";
while(n!=0){
i = n%16;
n = n/16;
stack.push(i);
}
for(int j :stack){
switch(j){
case 10:hex+='A';break;
case 11:hex+='B';break;
case 12:hex+='C';break;
case 13:hex+='D';break;
case 14:hex+='E';break;
case 15:hex+='F';break;
default:hex+=j;break;
}
}
return hex;
}