答案
package 算法;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class 简单表达式计算 {
public static void main(String[] args) throws ScriptException, IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String line;
ScriptEngine scriptEngine = new ScriptEngineManager().getEngineByName("nashorn");
while (!(line = in.readLine()).equals("END")) {
System.out.println(String.valueOf(scriptEngine.eval(line)));
}
in.close();
}
}
答题思路
这个题目我不太会做然后找找看到这个最少就感觉好强 然后这个感觉有点像偷懒用ScriptEnine的
getEngineByName(String shortName) 查找并创建一个给定名称的 ScriptEngine。方法调出js然后用js里的eval方法计算确实比较快捷方便
移除链表中的元素
public class 移除链表中的元素 {
public ListNode removeElements(ListNode head, int val) {
while(head != null && head.val == val) {
ListNode delNode = head;
head = head.next;
delNode.next = null;
}
if(head == null) {
return null;
}
ListNode prev = head;
while(prev.next!=null) {
if(prev.next.val == val) {
ListNode delNode = prev.next;
prev.next = delNode.next;
delNode.next = null;
}else {
prev = prev.next;
}
}
return head;
}
public class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
}
改进虚拟头结点
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode removeElements(ListNode head, int val) {
ListNode dummyHead = new ListNode(-1);
dummyHead.next = head;
ListNode prev = dummyHead;
while(prev.next!=null) {
if(prev.next.val == val) {
ListNode delNode = prev.next;
prev.next = delNode.next;
delNode.next = null;
}else {
prev = prev.next;
}
}
return dummyHead.next;
}
}
递归
public class Sum {
public static int sum(int[] arr) {
return sum(arr,0);
}
private static int sum(int arr[],int l) {
if( l == arr.length) {
return 0;
}
return arr[l] + sum(arr,l+1);
}
public static void main(String[] args) {
int[] nums = {1,2,3,4,5,6,7,8};
System.out.println(sum(nums));
}
}
递归方法解决203号题
public class 移除链表中的元素3 {
public ListNode removeElements(ListNode head, int val) {
if(head == null) {
return null;
}
ListNode res = removeElements(head.next, val);
if(head.val == val) {
return res;
}else {
head.next = res;
return head;
}
}
public class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
}