LeetCode 227 基本計算器 II

2022-09-22 02:45:08 字數 924 閱讀 8998

使用傳統棧字尾表示式+彈棧計算,爆時間爆記憶體,垃圾解法;

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 solution 

if (!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

感覺自己的思路還不錯,比較簡單清晰,量也比較少,沒有用到記錄運算子的變數或棧,就想把這個思路發一下部落格。題目 實現乙個基本的計算器來計算乙個簡單的字串表示式的值。字串表示式僅包含非負整數,四種運算子和空格 整數除法僅保留整數部分。思路 使用乙個棧用於暫存得不到計算的數字 無法確定優先順序,比如當前...