重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
問題描述:
給你一個(gè)字符串 s ,它包含一些括號(hào)對(duì),每個(gè)括號(hào)中包含一個(gè) 非空 的鍵。
比方說,字符串 “(name)is(age)yearsold” 中,有 兩個(gè) 括號(hào)對(duì),分別包含鍵 “name” 和 “age” 。
你知道許多鍵對(duì)應(yīng)的值,這些關(guān)系由二維字符串?dāng)?shù)組 knowledge 表示,其中 knowledge[i] = [keyi, valuei] ,表示鍵 keyi 對(duì)應(yīng)的值為 valuei 。
你需要替換 所有 的括號(hào)對(duì)。當(dāng)你替換一個(gè)括號(hào)對(duì),且它包含的鍵為 keyi 時(shí),你需要:
將 keyi 和括號(hào)用對(duì)應(yīng)的值 valuei 替換。
如果從 knowledge 中無法得知某個(gè)鍵對(duì)應(yīng)的值,你需要將 keyi 和括號(hào)用問號(hào) “?” 替換(不需要引號(hào))。
knowledge 中每個(gè)鍵最多只會(huì)出現(xiàn)一次。s 中不會(huì)有嵌套的括號(hào)。
請(qǐng)你返回替換 所有 括號(hào)對(duì)后的結(jié)果字符串。
樣例如下:
代碼如下(思路在注釋中):
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
public class Evaluate {public static String evaluate(String s, List>knowledge) {StringBuilder stringBuilder = new StringBuilder();
Mapmap = new HashMap<>();
for (int i = 0; i< knowledge.size(); i++) {//將knowledge中的內(nèi)容存放到map中
map.put(knowledge.get(i).get(0),knowledge.get(i).get(1));
}
for (int i = 0; i< s.length(); i++) {if (s.charAt(i) == '('){//若為左括號(hào),則向右尋找右括號(hào)的位置
int j = i;
while (s.charAt(j) != ')'){j++;
}
String temp = s.substring(i+1,j);//找到括號(hào)中的子串
stringBuilder.append(map.getOrDefault(temp, "?"));
i = j;
}else {stringBuilder.append(s.charAt(i));//若不為括號(hào),則直接添加
}
}
return stringBuilder.toString();
}
public static void main(String[] args) {List>list = new LinkedList<>();
Listlist1 = new LinkedList<>();
list1.add("name");
list1.add("bob");
Listlist2 = new LinkedList<>();
list2.add("age");
list2.add("two");
list.add(list1);
list.add(list2);
System.out.println(evaluate("(name)is(age)yearsold",list));
}
}
運(yùn)行結(jié)果如下:
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧