In JAVA:-
给出字符串中的等式: String equation = "4*x^3-19*x^2+2*x-1=0"; ,如何找到它的度数?
String equation = "4*x^3-19*x^2+2*x-1=0";
我想到了通过字符串查找插入符号'^'的位置,得到插入符号之后的数字,其中最高的是等式的程度 . 但是,如果数字超过一位数怎么办?实现这个就是设计一个方程解析器!
所以你能告诉我其他任何方式吗?
编辑:
我想知道它的完成方式,例如使用其中一条注释而不是代码中所述的正则表达式 .
你可以尝试这样的事情:
int degree = 1; Matcher m = Pattern.compile("(?<=\\^)\\d+").matcher(equation); while (m.find()) { int exp = Integer.parseInt(m.group()); if (exp > degree) degree = exp; }
我们找到 (?<=\^)\d+ 的所有比赛 . \d+ 匹配一个或多个数字的字符串, (?<=\^) 是positive lookbehind,以确保这些数字前面有一个插入符号(但在匹配中不包括此插入符号) .
(?<=\^)\d+
\d+
(?<=\^)
您可以使用以下正则表达式来匹配插入符后面包含的值:
\^\d+
哪个将明确匹配每个值,然后您可以简单地找到匹配的最大值并返回它 .
(Tutorial on Regular Expressions in Java)
2 回答
你可以尝试这样的事情:
我们找到
(?<=\^)\d+
的所有比赛 .\d+
匹配一个或多个数字的字符串,(?<=\^)
是positive lookbehind,以确保这些数字前面有一个插入符号(但在匹配中不包括此插入符号) .您可以使用以下正则表达式来匹配插入符后面包含的值:
哪个将明确匹配每个值,然后您可以简单地找到匹配的最大值并返回它 .
(Tutorial on Regular Expressions in Java)