4
我在Java中實現Shunting Yard Algorithm,作爲我的AP計算機科學類的一個側面項目。我用Javascript實現了一個簡單的算法,只有基本的算術表達式(加法,減法,乘法,除法,求冪)。爲了將它拆分成一個數組,我所做的是找到每個運算符(+-*/^
)以及數字和括號,然後在它們周圍放置一個空格,然後將其分割成一個數組。例如,中綴字符串4+(3+2)
將被製作爲4 + (3 + 2)
,然後在空白處分割。在Java中Tokenizing中綴字符串
但是,我覺得這種方法非常慢,並且隨着您開始添加數學函數(例如正弦,餘弦,正切,絕對值等)而變得越來越難以實施。
將sin(4+3)-8
這樣的字符串拆分爲數組["sin","(" 4,"+",3,")","-",8]
的最佳方法是什麼?
我可以用這個正則表達式,但我並沒有很好地理解它們,而且我試圖去了解它們,所以如果這對他們來說是最好的解決方案,請問解答器能解釋它的作用嗎?