gpt4 book ai didi

Java - 返回字符串中特定字符的随机索引

转载 作者:搜寻专家 更新时间:2023-11-01 03:00:20 24 4
gpt4 key购买 nike

因此给定一个字符串,例如:0100101,我想返回一个随机的单个索引,该索引是 1 (1, 5, 6) 的位置之一。

到目前为止我正在使用:

protected int getRandomBirthIndex(String s) {
ArrayList<Integer> birthIndicies = new ArrayList<Integer>();
for (int i = 0; i < s.length(); i++) {
if ((s.charAt(i) == '1')) {
birthIndicies.add(i);
}
}
return birthIndicies.get(Randomizer.nextInt(birthIndicies.size()));
}

但是,它导致我的代码出现瓶颈(45% 的 CPU 时间花在这个方法上),因为字符串的长度超过 4000 个字符。谁能想到一种更有效的方法来做到这一点?

最佳答案

如果您对具有 1 的位置之一的单个索引感兴趣,并假设您的输入中至少有一个 1,您可以这样做这个:

    String input = "0100101"; 
final int n=input.length();
Random generator = new Random();
char c=0;
int i=0;
do{
i = generator.nextInt(n);
c=input.charAt(i);
}while(c!='1');
System.out.println(i);

此解决方案速度快且不会占用太多内存,例如当10 均匀分布时。正如@paxdiablo 强调的那样,它在某些情况下可能表现不佳,例如当 1 稀缺时。

关于Java - 返回字符串中特定字符的随机索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36564114/

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