如何判断一个字符串是否是合法的数学表达式
There is a string which only contain +,-,*,/,0-9(and). Write a piece of code to tell if it is a valid arithemetic expressin .
bool IsValidExpression(char * str)
{
}
[解决办法]
这个问题大了。
lex/yacc搞这个比较在行。
[解决办法]
这个主要是要细心,考虑到一个合法数学表达式的要求
1、等号左边合法
2、等号右边合法
当然,前提是只有一个 "= "
[解决办法]
先检查是否有非运算字符
用栈检查括号和符号的位置。还有必要符号检查。
[解决办法]
楼主学了编译原理就能明白,写个词法分析器就知道了
[解决办法]
刚刚学的数据结构,习题中有这个
先判断括号是否匹配,用一个栈来判断,左括号进栈,遇右括号就将栈顶的元素出栈,判断最后栈是否为空,是则匹配
然后将遍历,求操作数的个数a,还有操作符的和b,由于都是二元操作符,根据二叉树的知识有公式a=b+1,就可以判断是否正确了
应该没什么问题,我写的表达式求值程序的第一部分就是这样的思路,运行正常
[解决办法]
先从括号找,。。。
[解决办法]
数据结构书上说用栈检验括号的匹配正确与否
其它各种非法很容易检验
[解决办法]
利用堆栈解决问题哈