字串 四則運算

2022-04-05 21:03:17 字數 922 閱讀 9501

題目大意:

有字串表示的乙個四則運算表示式,要求計算出該表示式的正確數值。四則運算即:加減乘除"+-*/",另外該表示式中的數字只能是1位(數值範圍0~9)。另若有不能整除的情況,按向下取整處理,eg: 8/3得出值為2。若有字串"8+7*2-9/3",計算出其值為19。

2023年華為上機的乙個題目

題目思路:

建立棧分別儲存操作符和運算元,比較操作符的優先順序,並以此決定運算元是否進行出棧運算還是直接入棧。只要對給定字串,畫出出入棧的順序,整個題基本沒問題,只是過程比較繁瑣。我在題目用到是c++的stack容器,當然自己構造乙個棧結構也可以。

原始碼:

#include #include using namespace std;

int cmp(const char c1,const char c2) //判斷優先順序

int compute(const char* pstr) //計算結果

else if(pstr[i]=='+'||pstr[i]=='-'||pstr[i]=='*'||pstr[i]=='/')

else

copter.pop(); //同級操作符出棧

copter.push(pstr[i]); //同級操作符入棧

break;

case -1:

copter.push(pstr[i]); //棧內操作符優先順序小於所提取的操作符,則直接將提取的操作符入棧

break;

default:break;}}

} } while(!copter.empty()) //當上述迴圈遍歷至結尾時,至少最後的2個運算元未進行計算(至多3個運算元),可以畫棧圖理解

copter.pop();

} return t3;

}int main()

字串的四則運算

public string addstrings string num1,string num2 if b 0 tmp 10 return sb.reverse tostring 題目二 字串相減 給定兩個字串形式的非負整數 num1 和num2 計算它們的差。預設num1比num2大 注 不能使用...

字串的四則運算

四則運算,最常用的當然是逆波蘭方法,現將表示式由中綴表示式轉化為字尾表示式,然後再使用棧計算即可。這兩步下來,估計沒有三四百行 是實現不了的。中綴表示式轉字首字尾表示式 將中綴表示式轉換為字尾表示式的演算法思想 數字時,加入字尾表示式 運算子 a.若為 入棧 b.若為 則依次把棧中的的運算子加入字尾...

as 字串解析成四則運算

1,解析字串 a 1 b 2 c 1 2等類似字串表示式 2.步驟一是先取出 中的標記id,根據id取到對應的數值,第一步解析後狀態似 4 5 1 2 3.步驟二是根據 4 5 1 2解析成四則元算後,得到乙個結果值,return string型別。package com.zzz 計算字串中的某已單...