gpt4 book ai didi

Java:根据多个规则替换字符串

转载 作者:搜寻专家 更新时间:2023-10-31 19:32:28 24 4
gpt4 key购买 nike

我有以下任务。有一个字符串。我必须根据 6 条规则在其中进行替换,直到可以在字符串中进行替换。

我找到的解决方案如下。它工作正常。问题是它的性能很低。我还能如何根据多个规则进行替换?有什么算法吗?

附言此任务来自 codility 站点。我的解决方案获得了 100% 的正确性和 25% 的性能。

class Test {

private Map<String,String> rules;

private void initRules(){
rules=new HashMap<>();
rules.put("AB", "AA");
rules.put("BA", "AA");
rules.put("CB", "CC");
rules.put("BC", "CC");
rules.put("AA", "A");
rules.put("CC", "C");
}

public String test(String S) {
initRules();
loop:while(true){
String oldString=S;
for (Map.Entry<String, String> rule : rules.entrySet())
{
S=S.replace(rule.getKey(), rule.getValue());
}
if (oldString==S){
break loop;
};
}
return S;
}
}

public class NewMain {

public static void main(String[] args) {
Test test=new Test();
System.out.println("Result:"+test.test("ABBCC"));;
}

}

最佳答案

这是您可以使用的算法:

假设:字符串只包含 (A,B,C)

如果字符串仅由 B 的 组成(无 A/C),则输出 = 输入字符串。

否则:

按以下方式划分字符串。如果子串由 (B,A) 或 (B,C) 组成,则将它们分开。分别替换为 A 和 C。这就是答案。

例如。让字符串为:“BBBAABABBBCCBCBBCACB”。这将分为:

“BBBAABABBB”“CCBCBBC”“A”“CB”

这将导致输出字符串为:ACAC

基本上,只需忽略所有 B 并将 A 的集群 替换为 A 并将 C 的集群 替换为 C

关于Java:根据多个规则替换字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33235126/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com