2

JAVA の場合:-

文字列内の方程式が与えられた場合: String equation = "4*x^3-19*x^2+2*x-1=0";、その次数を見つける方法は?

文字列をループしてキャレットの位置を見つけることを考えました '^'、キャレットの後に数字を取得し、それらの中で最高のものは方程式の次数になります。しかし、数字が 1 桁以上の場合はどうなるでしょうか。これを実装すると、方程式のパーサーを設計することになります!

では、他の方法で教えてもらえますか?

編集:

コードではなくコメントの1つに記載されている正規表現を使用するなど、それを行う方法を知りたいです。

4

2 に答える 2

5

次のようなことを試すことができます:

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+1 つ以上の数字の文字列に一致し、これらの数字の前にキャレットがあることを確認(?<=\^)する肯定的な後読みです(ただし、このキャレットは一致に含まれません)。

于 2013-08-06T16:05:26.803 に答える
2

次の正規表現を使用して、キャレットの後に含まれる値を照合できます。

\^\d+

これは各値と明示的に一致し、一致した最大値を単純に見つけて返すことができます。

( Java の正規表現のチュートリアル)

于 2013-08-06T16:05:56.423 に答える