Итак, в принципе, у меня может быть какая-то строка, которая выглядит примерно так: «эй, это строка * эта строка потрясающая 97 * 3 = 27 * эта строка классная».
Однако эта строка может быть огромной. Я пытаюсь удалить все звездочки из строки, если только эта звездочка не представляет собой умножение. Эффективность здесь в некоторой степени важна, и у меня возникли проблемы с тем, чтобы придумать хороший алгоритм, чтобы удалить из него все звездочки, не связанные с умножением.
Чтобы определить, предназначена ли звездочка для умножения, я, очевидно, могу просто проверить, зажата ли она между двумя числами.
Таким образом, я подумал, что могу сделать что-то вроде (псевдокода):
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 ++?
Кроме того, как я могу проверить, является ли слово числом? Допускается десятичное число. Я знаю, что есть функция, которая проверяет, является ли символ числом ...