当前位置:网站首页>1807. Replace the parentheses in the string
1807. Replace the parentheses in the string
2022-07-04 22:02:00 【Mr Gao】
1807. Replace the parentheses in the string
Give you a string s , It contains some pairs of brackets , Each bracket contains a Non empty Key .
For example , character string "(name)is(age)yearsold" in , Yes Two Bracket pair , Each contains keys "name" and "age" .
You know the values of many keys , These relationships are made up of two-dimensional string arrays knowledge Express , among knowledge[i] = [keyi, valuei] , The key keyi The corresponding value is valuei .
You need to replace all Pair of brackets . When you replace a pair of brackets , And the key it contains is keyi when , You need :
take keyi And parentheses with the corresponding values valuei Replace .
If from knowledge The value of a key cannot be found in , You need to keyi And brackets with question marks "?" Replace ( You don't need quotes ).
knowledge Each key in will appear at most once .s There will be no nested parentheses in .
Please return to replace all The result string after the bracket pair .
Example 1:
Input :s = “(name)is(age)yearsold”, knowledge = [[“name”,“bob”],[“age”,“two”]]
Output :“bobistwoyearsold”
explain :
key “name” The corresponding value is “bob” , So will “(name)” Replace with “bob” .
key “age” The corresponding value is “two” , So will “(age)” Replace with “two” .
Example 2:
Input :s = “hi(name)”, knowledge = [[“a”,“b”]]
Output :“hi?”
explain : Because I don't know the key “name” Corresponding value , So use “?” Replace “(name)” .
Example 3:
Input :s = “(a)(a)(a)aaa”, knowledge = [[“a”,“yes”]]
Output :“yesyesyesaaa”
explain : Same key in s There may be many times .
key “a” The corresponding value is “yes” , So put all the “(a)” Replace with “yes” .
Be careful , Not in brackets “a” It doesn't need to be replaced .
This problem is obviously relatively simple to use hash table, but , The author tried the conventional method this time , Interested can learn :
int f(char *s,int index,char ***knowledge,int knowledgeSize){
int i;
for(i=0;i<knowledgeSize;i++){
char *p=knowledge[i][0];
int j=index,k=0,r=0;
while(s[j]!='('&&p[k]!='\0'){
if(s[j++]!=p[k++]){
r=1;
break;
}
}
if(r==0&&s[j]==')'&&p[k]=='\0'){
return i;
}
}
return -1;
}
char * evaluate(char * s, char *** knowledge, int knowledgeSize, int* knowledgeColSize){
char *re=(char *)malloc(sizeof(char )*(strlen(s)+2));
int resize=0;
int i=0;
while(s[i]!='\0'){
// printf("|i %d ",i);
if(s[i]!='('){
re[resize++]=s[i];
}
else{
int index=f(s,i+1,knowledge,knowledgeSize);
if(index==-1){
re[resize++]='?';
}
else{
char *p=knowledge[index][1];
int k=0;
while(p[k]!='\0'){
re[resize++]=p[k++];
}
}
while(s[i]!=')'){
i++;
}
}
i++;
}
re[resize]='\0';
return re;
}
边栏推荐
- gtest从一无所知到熟练使用(3)什么是test suite和test case
- What is the stock account opening process? Is it safe to use flush mobile stock trading software?
- EhLib 数据库记录的下拉选择
- [weekly translation go] how to code in go series articles are online!!
- TCP三次握手,四次挥手,你真的了解吗?
- [early knowledge of activities] list of recent activities of livevideostack
- QT—双缓冲绘图
- 开源之夏专访|Apache IoTDB社区 新晋Committer谢其骏
- Application practice | Shuhai supply chain construction of data center based on Apache Doris
- HUAWEI nova 10系列发布 华为应用市场筑牢应用安全防火墙
猜你喜欢

迷失在Mysql的锁世界

什么是商业智能(BI),就看这篇文章足够了

Daily question-leetcode556-next larger element iii-string-double pointer-next_ permutation

【C语言进阶篇】数组&&指针&&数组笔试题

保证接口数据安全的10种方案

智洋创新与华为签署合作协议,共同推进昇腾AI产业持续发展

Operation of adding material schedule in SolidWorks drawing

VS2019 C# release下断点调试

How to remove the black dot in front of the title in word document

Keep on fighting! The city chain technology digital summit was grandly held in Chongqing
随机推荐
从RepVgg到MobileOne,含mobileone的代码
2022 version of stronger jsonpath compatibility and performance test (snack3, fastjson2, jayway.jsonpath)
Caduceus从未停止创新,去中心化边缘渲染技术让元宇宙不再遥远
QT—双缓冲绘图
el-tree结合el-table,树形添加修改操作
电话加密,中间4为****代替
MP3是如何诞生的?
案例分享|金融业数据运营运维一体化建设
【公开课预告】:视频质量评价基础与实践
PostgreSQL基本结构——表
KDD2022 | 什么特征进行交互才是有效的?
HDU - 2859 Phalanx(DP)
Analysis of maker education technology in the Internet Era
旋变串判断
并列图的画法,多排多列
Enlightenment of maker thinking in Higher Education
TCP协议三次握手过程
开源之夏专访|Apache IoTDB社区 新晋Committer谢其骏
股票开户流程是什么?使用同花顺手机炒股软件安全吗?
283. Moving zero-c and language assisted array method