使用傳統棧字尾表示式+彈棧計算,爆時間爆記憶體,垃圾解法;
mapmp;vectorbs;
void init()
void back_string(string s)
bs.push_back(ss);
} else if(s[i]=='+'||s[i]=='-'||s[i]=='*'||s[i]=='/')
else
else
sign.push(s[i]);}}
i++;
} else
} while (!sign.empty())
}int calculate(string s)
else if (bs[i] == "-")
else if (bs[i] == "*")
else if (bs[i] == "/")
else
st.push(cnt);
} }return st.top();
}
最快的寫法應該是採用之前簡單加減運算之上,增加乘除優先順序即可;
遇到加減元素,標記正負號之後按照數字入棧;
如果遇到乘除符號,則兩位運算元只可能是現在的遍歷得數目和棧頂元素,所以彈棧計算之後進行壓棧;
但是值得注意的是,每次判斷都是根據presign進行的,所以每次計算落後於實際遍歷操作;
最後只需要對棧內元素進行加和計算即可;
class solutionif (!isdigit(s[i]) && s[i] != ' ' || i == n - 1)
presign = s[i];
num = 0;}}
return accumulate(stk.begin(), stk.end(), 0);
}};
leetcode 227 基本計算器II
實現乙個基本的計算器來計算乙個簡單的字串表示式的值。字串表示式僅包含非負整數,四種運算子和空格 整數除法僅保留整數部分。示例 1 輸入 3 2 2 輸出 7示例 2 輸入 3 2 輸出 1示例 3 輸入 3 5 2 輸出 5說明 1 你可以假設所給定的表示式都是有效的。2 請不要使用內建的庫函式 e...
leetcode 227基本計算器II
實現乙個基本的計算器來計算乙個簡單的字串表示式的值。字串表示式僅包含非負整數,四種運算子和空格 整數除法僅保留整數部分。示例 1 輸入 3 2 2 輸出 7 示例 2 輸入 3 2 輸出 1 示例 3 輸入 3 5 2 輸出 5 說明 你可以假設所給定的表示式都是有效的。請不要使用內建的庫函式 ev...
LeetCode227 基本計算器II
感覺自己的思路還不錯,比較簡單清晰,量也比較少,沒有用到記錄運算子的變數或棧,就想把這個思路發一下部落格。題目 實現乙個基本的計算器來計算乙個簡單的字串表示式的值。字串表示式僅包含非負整數,四種運算子和空格 整數除法僅保留整數部分。思路 使用乙個棧用於暫存得不到計算的數字 無法確定優先順序,比如當前...