(力扣)设计 Goal 解析器(简单)JAVA

请你设计一个可以解释字符串 command 的 Goal 解析器 。 ## command 由 “G”、"()" 和/或 “(al)” 按某种顺序组成。 ## Goal 解析器会将 “G” 解释为字符串 “G”、"()" 解释为字符串 “o” ,"(al)" 解释为字符串 “al” 。 ## 然后,按原顺序将经解释得到的字符串连接成一个字符串。 ## 给你字符串 command ,返回 Goal 解析器 对 command 的解释结果。

  • 思路一
    new一个StringBuilder,作为存储经过改变后的字符串,最后再转换成String.
    string本身是不可改变的,它只能赋值一次,每一次内容发生改变,都会生成一个新的对象,然后原有的对象引用新的对象,而每一次生成新对象都会对系统性能产生影响.

    而StringBuilder类则不同,每次操作都是对自身对象进行操作,而不是生成新的对象,其所占空间会随着内容的增加而扩充,这样,在做大量的修改操作时,不会因生成大量匿名对象而影响系统性能

    而当程序中需要大量的对某个字符串进行操作时,应该考虑应用StringBuilder类处理该字符串,其设计目的就是针对大量string操作的一种改进办法,避免产生太多的临时对象;而当程序中只是对某个字符串进行一次或几次操作时,采用string类即可

 class Solution {
    public String interpret(String command) {
        StringBuilder sb = new StringBuilder();
        for(int i=0;i<command.length();i++){
            if(command.charAt(i)=='G'){
                sb.append("G");
            }else if(command.charAt(i)=='('&&command.charAt(i+1)==')'){
                sb.append("o");
            }else if(command.charAt(i)=='('&&command.charAt(i+1)=='a'&&
             command.charAt(i+2)=='l'&&command.charAt(i+3)==')'){
                 sb.append("al");
             }
        }
        String s = sb.toString();
        return s;
    }
}
  • 思路二
    利用String中的replace

    Java中replace()、replaceAll()、replaceFirst()区别:replace()和replaceAll()都是替换所有,但replaceAll()支持正则表达式;replaceAll()和replaceFirst()都支持正则表达式,但replaceFirst()只替换第一个匹配项。*

class Solution {
    public String interpret(String command) {
        command=command.replace("()","o");
        command=command.replace("(al)","al");
        return command;
        }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值