つまり、基本的には、次のような文字列があるかもしれません。
ただし、この文字列は巨大になる可能性があります。アスタリスクが乗算を表しているように見えない限り、文字列からすべてのアスタリスクを削除しようとしています。ここでは効率がいくぶん重要であり、ここから乗算以外のすべてのアスタリスクを削除するための優れたアルゴリズムを考え出すのに苦労しています。
アスタリスクが乗算用かどうかを判断するには、アスタリスクが 2 つの数値の間に挟まれているかどうかを確認するだけです。
したがって、(疑似コード)のようなことができると思っていました:
wasNumber = false
Loop through string
if number
set wasNumber = true
else
set wasNumber = false
if asterisk
if wasNumber
if the next word is a number
do nothing
else
remove asterisk
else
remove asterisk
ただし、それは巨大な文字列では見苦しく非効率的です。C++ でこれを達成するためのより良い方法を考えられますか?
また、単語が数字であるかどうかを実際に確認するにはどうすればよいですか? 10 進数を指定できます。文字が数字かどうかをチェックする関数があることを知っています...