gpt4 book ai didi

java - 为什么我的函数给出无限输出?

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

问题是根据给定的 1、0 和 ? 模式生成所有二进制字符串。以下代码是我编写的,它提供无限输出。例如,如果输入是 1?1? , 输出应该是 1010, 1011 , 1110 , 1111

我正在使用队列以迭代方式进行。

static void fill(StringBuilder s)
{
Queue<StringBuilder> q = new LinkedList<StringBuilder> () ;
q.add(s);
while(!q.isEmpty())
{
s = q.peek();
int pos = s.indexOf("?");
if(pos>=0)
{
StringBuilder s1 = new StringBuilder(s);
s1.setCharAt(pos,'0');
q.add(s1);
StringBuilder s2 = new StringBuilder(s);
s1.setCharAt(pos,'1');
q.add(s2);
}
else
System.out.println(s);
q.poll();
}
}

最佳答案

请注意,在这两种情况下您都在修改 s1:

if(pos>=0)
{
StringBuilder s1 = new StringBuilder(s);
s1.setCharAt(pos,'0'); // <-- Here s1 is fine
q.add(s1);
StringBuilder s2 = new StringBuilder(s);
s1.setCharAt(pos,'1'); // <-- You must use s2
q.add(s2);
}

关于java - 为什么我的函数给出无限输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50409321/

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