面试遇到的一个奇葩题目 求大神们解答!!!
题目大致是 String eveal(String s) 意思是这个方法要返回一个结果 输入参数是一个字符串形式的 算式 如 (1+1)*3/2+1这样形式的字符串 你要返回结果
------解决方案--------------------这个就是一个算式计算器的核心函数
下面是我软件中的一个函数,完全符合你要求,只不过是VB6的代码。
Option Explicit
Dim Hds As String
Private Sub Form_Load()
MsgBox "(1+1)×3÷2+1=" & GetJSResult("(1+1)×3÷2+1")
End Sub
Public Function GetJSResult(ByVal Jsgs As String) As Currency '递归计算所给的数学算式
Dim Kh1 As Long, Kh2 As Long, halfKh As Long
Dim i As Long, jsgs1 As String
jsgs1 = Jsgs
'找出第一对最外层括号,并将其中内容做为参数调用本函数GetJSResult,继续剥离括号
Kh1 = InStr(1, jsgs1, "(")
If Kh1 > 0 Then
halfKh = halfKh + 1
For i = Kh1 + 1 To Len(jsgs1)
If Mid(jsgs1, i, 1) = "(" Then halfKh = halfKh + 1
If Mid(jsgs1, i, 1) = ")" Then
halfKh = halfKh - 1
If halfKh = 0 Then '
Kh2 = i
jsgs1 = Left(jsgs1, Kh1 - 1) & GetJSResult(Mid(jsgs1, Kh1 + 1, Kh2 - Kh1 - 1)) & Right(jsgs1, Len(jsgs1) - Kh2)
Hds = Hds & vbCrLf & "=" & jsgs1
Kh1 = InStr(1, jsgs1, "(")
If Kh1 = 0 Then
Exit For
Else
i = Kh1 - 1
End If
End If
End If
Next
End If