題目描述
輸入4則執行算表示式, 額外再定義了兩種運算操作
min(a,b)計算最小值
max(a,b)計算最大值
表示式不包括空格, 可以使用()設定優先順序, 數字都是整數, 且輸入一定合法, 不需要校驗
例如 min(1,(2+3)*4)+(1+2)*3 的值為10
思路
遇到加減操作, 它之前的操作的優先順序不會比現在低, 可以都消除掉.
而當前的加減操作還不能消,先存到棧中
遇到乘除操作, 只能先消除掉它之前的乘除操作
遇到圓括號, 整個圓括號內的表示式最終可以消除1個值
js實現
開啟 將以下**複雜上去, 就可以直接執行了
// 用於字串轉整數
const charcode_0 =
'0'.
charcodeat(0
);const charcode_9 =
'9'.
charcodeat(0
);// 擴充套件陣列介面
array.prototype.
peek
=function()
const operations =
,'-'
:function
(a, b)
,'*'
:function
(a, b)
,'/'
:function
(a, b)
,'i'
:function
(a, b)
,'a'
:function
(a, b),}
// 簡化字元遍歷
class
stringbuffer
hasnext()
peek()
poll()
skip
(n)back
(n)// 讀取乙個整數, 假設當前位元組一定是個數字
readnumber()
else
}return n;}}
// 計算表示式
function
doeval
(buf)
break
;case
'+':
case
'-':
// 這之前的操作符可能的情況有
// 1. 1個加減,跟隨1個乘除, 從後往前消兩次
// 2. 1個加減操作, 消掉
// 3. 1個乘除操作, 消掉
// 不可能出現多個連續同級操作
calc
(operatorstack, operandstack)
; operatorstack.
push
(ch);}
break
;case
'*':
case
'/':
else
} operatorstack.
push
(ch);}
break
;case
'(':
break
;case
')':
// 計算圓括號內的表示式
while
(operatorstack.length >0)
const b = operandstack.
pop();
const a = operandstack.
pop();
const r = operations[op]
(a, b)
; operandstack.
push
(r);}}
break
;case
',':
default:}
lastopisleftparetness = parentness;
}calc
(operatorstack, operandstack)
;return operandstack.
pop();
}function
calc
(operatorstack, operandstack)
operatorstack.
pop();
const b = operandstack.
pop();
const a = operandstack.
pop();
// 注意a, b的先後順序
const r = operations[op]
(a, b)
; operandstack.
push
(r);}}
function
evaluate
(express)
const thiz =
this
;function
main()
= $, expect: $,
$`);
} console.
log(output.
join
('\r\n'))
;// 瀏覽器上執行
if(thiz.document)
}main()
;
JAVA經典演算法四題
程式4 題目 將乙個正整數分解質因數。例如 輸入90,列印出90 2 3 3 5。程式分析 對n進行分解質因數,應先找到乙個最小的質數k,然後按下述步驟完成 1 如果這個質數恰等於n,則說明分解質因數的過程已經結束,列印出即可。2 如果n k,但n能被k整除,則應列印出k的值,並用n除以k的商,作為...
演算法題 四數之和
題目描述 給定乙個包含 n 個整數的陣列 nums 和乙個目標值 target,判斷 nums 中是否存在四個元素 a,b,c 和 d 使得 a b c d 的值與 target 相等?找出所有滿足條件且不重複的四元組。注意 答案中不可以包含重複的四元組。示例 給定陣列 nums 1,0,1,0,2...
程式設計題 四則運算
請實現如下介面 功能 四則運算 輸入 strexpression 字串格式的算術表示式,如 3 2 返回 算術表示式的計算結果 public static intcalculate string strexpression 約束 pucexpression 字串中的有效字元包括 0 9 pucexp...