String 字符串替换更好的方法
给定一个字符串,如果有两个相邻的String 字符串替换更好的方法,string,algorithm,replace,String,Algorithm,Replace,给定一个字符串,如果有两个相邻的'a'将其转换为'a',如果有一个'b'将'b'转换为'bb'。例如,“aabbaaa”->“abbbaa” 我想做两件事 只要str[i]==str[i+1]和str[i]==a',就可以使用字符串生成器和追加。如果使用字符串生成器,这似乎是一个很小的问题 或者,获取一个字符串大小两倍的字符数组(基于字符串中所有字符都是'b')并根据上述条件继续赋值 是这样吗?还是可以更有效地完成 是的,字符串生成器是更好的选择,但是您的算法需要做一些工作 我建议的不是你有的,
'a'
将其转换为'a'
,如果有一个'b'
将'b'
转换为'bb'
。例如,“aabbaaa”
->“abbbaa”
我想做两件事
str[i]==str[i+1]和str[i]==a'
,就可以使用字符串生成器和追加。如果使用字符串生成器,这似乎是一个很小的问题'b'
)并根据上述条件继续赋值是这样吗?还是可以更有效地完成 是的,字符串生成器是更好的选择,但是您的算法需要做一些工作 我建议的不是你有的,而是这个。首先,使用一个布尔变量说明是否跳过了前一个字母。叫它<代码>跳过最后一个,并将其初始化为
false
。然后,在每个点i迭代字符串时:
如果((i>0)和(!skippedLast)和&(str[i-1]='a')&(str[i]='a'))
,则将skippedLast
设置为true
。否则,将skippedLast
设置为false
,并将str[i]
添加到输出中
如果str[i]==“b”
,则再次将str[i]
添加到输出中
(当然,如果您在java中寻找“最短代码”,只需执行
。替换(“aa”、“a”)。替换(“b”、“bb”)
就可以了)您可以使用regex。如果已安装perl:
echo aabbaaa | perl -ne '$_ =~ s/aa/a/g; $_ =~ s/b/bb/g; print'
有
java.util.regex.Pattern.compile((?:a(a))|(b)”).matcher(“aabbaaa”).replaceAll($1$2$2”)
-如果合适的话,选择语言标记。对于SB,我认为问题微不足道,没有仔细考虑。好主意,跳过最后一个。