分析
将键值对用哈希表存起来,之后遍历一遍字符串,遇到’(‘对括号内的字符串进行提取,之后用对应的哈希表进行替换。
C++ 代码
class Solution {
public:
string ans;
unordered_map<string,string> mp; //哈希表存储键值对
string evaluate(string s, vector<vector<string>>& knowledge) {
for(auto item:knowledge){
mp[item[0]]=item[1];
}
int n=s.size();
for(int i=0;i<n;i++)
{
if(s[i]=='('){ //遇到括号进行特判
int j=i+1;
string temp;
while(s[j]!=')'){
temp+=s[j];
j++;
}
i=j;
if(mp.count(temp)) ans+=mp[temp];
else ans+='?'; //没有改键值对,输出'?'
}
else ans+=s[i];
}
return ans;
}
};