我有以下任务。有一根绳子。我必须按照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)组成
如果string仅由b's
组成(没有A/C),则output=输入字符串。
例如,让字符串为:“BBBAABABBBCCBCBBCACB”。这将分为:
“BBBAABABBB”“CCBCBBC”“A”“CB”
这将导致输出字符串为:acac
基本上,只需忽略所有B的
,将A的
簇替换为A
簇,将C的
簇替换为C
簇。
我正在处理一个数据集,其中的分数是根据从临床记录中收集的数据计算出来的。在某些情况下,这些数据被忽略,因此分数无法计算,并记录为NA。 在某些情况下,我可以用以前的值替换安娜值。这种方法的局限性是: 如果分数为NA,检查前一个和下一个值是否为NA。如果前一个值和后一个值都不为NA,则插入这些分数的平均值。 如果分数为NA,请检查前一个值和下一个值是否为NA。如果只有前一个值不是NA,则将第一个NA
我最近在CodeWars中遇到了这个问题 给定一个数字串,您应该用“0”替换5以下的任何数字,用“1”替换5及以上的任何数字。返回结果字符串。注意:输入永远不会是空字符串 我来自 Python 背景,我们可以使用 if 语句进行索引来解决这个特定问题,如下所示: 但当我尝试在Swift中使用索引(如Python风格)时,我失败了……经过一段时间的研究,我发现了这个方法:<code>String。r
问题内容: 我有一个以字符串形式传递的句子,我正在对单词“ and”进行替换,我想用“”替换它。而且它不是用空格替换“和”一词。以下是我的逻辑示例。而当我调试此逻辑时,逻辑确实落入了句子。 这里有我想念的东西吗? 问题答案: 而当我调试此逻辑时,逻辑确实落入了句子。 是的,然后你放弃返回值。 Java中的字符串是不可变的-当你调用时,它不会更改现有字符串的内容-它会返回经过修改的新字符串。所以你要
我正在尝试编写一个字符串替换方法,它可以工作,但是在同一个字符串上使用多个替换方法看起来很糟糕。我很确定我可以在这里使用正则表达式。 我想只使用1替换()或替换所有()方法。简而言之,尝试构造一个正则表达式来替换这些字符,#*
问题内容: 我有一些带有以下格式的方程式的字符串。 我还有一个文本文件,其中包含每个变量的名称,例如: 等等… 什么是对我来说,写代码的最佳方式,使其在插头到处发生,并且对等? 问题答案: 对于string ,请使用以下函数:
我有一个PHP脚本这是一个字符串替换函数,它接受数组中的字符,如果在字符串中找到任何字符,就替换它们。是否有与该函数等价的java函数。我找到了一些方法,但有些是使用循环,有些是重复语句,但在Java中没有找到类似的单行解决方案。