当前位置: 首页 > 知识库问答 >
问题:

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

从智志
2023-03-14

我有以下任务。有一根绳子。我必须按照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"));;
    }

}

共有1个答案

钱宇
2023-03-14

这里有一个你可以使用的算法:

假设:字符串仅由(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中没有找到类似的单行解决方案。