当前位置:网站首页>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;
}
边栏推荐
猜你喜欢

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

Redis 排查大 key 的3种方法,优化必备

【公开课预告】:视频质量评价基础与实践

Case sharing | integrated construction of data operation and maintenance in the financial industry

Three or two things about the actual combat of OMS system

超详细教程,一文入门Istio架构原理及实战应用

TCP shakes hands three times and waves four times. Do you really understand?

Shutter textfield example

从RepVgg到MobileOne,含mobileone的代码

VS2019 C# release下断点调试
随机推荐
Application practice | Shuhai supply chain construction of data center based on Apache Doris
面试题 01.01. 判定字符是否唯一
bizchart+slider实现分组柱状图
ArcGIS 10.2.2 | solution to the failure of ArcGIS license server to start
面试官:说说XSS攻击是什么?
超详细教程,一文入门Istio架构原理及实战应用
TCP protocol three times handshake process
哈希表(Hash Tabel)
TCP shakes hands three times and waves four times. Do you really understand?
电话加密,中间4为****代替
开源之夏专访|Apache IoTDB社区 新晋Committer谢其骏
Go language loop statement (3 in Lesson 10)
How to implement Devops with automatic tools
网上开户哪家证券公司佣金最低,我要开户,网上开户安全吗
gtest从一无所知到熟练运用(1)gtest安装
Delphi soap WebService server-side multiple soapdatamodules implement the same interface method, interface inheritance
Daily question -leetcode1200- minimum absolute difference - array - sort
ACM Multimedia 2022 | 视觉语言预训练模型中社会偏见的反事实衡量和消除
Telephone encryption, middle 4 is replaced by * * * *
KDD2022 | 什么特征进行交互才是有效的?