gpt4 book ai didi

java - 字符串中字符替换的高效算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:32:05 25 4
gpt4 key购买 nike

我有两个字符串

  1. 111TTT0000TT11T00
  2. 001101

现在我想用字符串 2 中的字符替换字符串 1 中出现的所有 T。比如第一个 T 为 0,第二个 T 为 0,第三个 T 为 1,依此类推。

这样做的一种方法是使用 while 循环并比较每个字符,但在编程意义上这不是实现它的好方法。任何人都可以使用 JAVA 用更好的算法解决它吗?

public void DataParse(String point, String code)
{

//////////tln("Point:"+point);
//////////tln("code:"+code);
// //////////tln(baseString_temp);

int counter=0;

while(baseString_temp.contains(point))
{
if(code!=null)
{
String input=String.valueOf(code.charAt(counter));
//zzzzz(input);


baseString_temp=baseString_temp.replaceFirst(point,input);
counter=counter+1;
}
}

////////////System.out(baseString_temp);
}

最佳答案

每次,当您使用containsreplaceFirst 时,您都会强制您的程序从头开始枚举字符串的字符。我相信单程完成会更好:

public static String replaceToken(String primary, String secondary, char token) {

char [] charArray =primary.toCharArray();

int counter = 0;
for(int i=0; i<charArray.length; i++){
if(charArray[i]==token){
charArray[i] = secondary.charAt(counter);
counter++;
if(counter>=secondary.length()) break;
}
}
return new String(charArray);
}


public static void main(String[] args) {
String result = replaceToken("111TTT0000TT11T00", "001101", 'T');
}

如果你真的很想使用 RegExp 那么多,那么你在这里:

public static String replaceSequence(String primary, String secondary, String sequence){

Pattern pattern = Pattern.compile(sequence + "+");
Matcher matcher = pattern.matcher(primary);

int counter = 0;
char [] charArray = primary.toCharArray();

while(matcher.find() && counter<secondary.length()){
for(int i = matcher.start(); i<matcher.end(); i++){
charArray[i] = secondary.charAt(counter++);
if(counter>=secondary.length()) break;
}
}
return new String(charArray);
}

但是,根据您对任务的描述,我更喜欢第一种方法。

关于java - 字符串中字符替换的高效算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35222923/

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