for(i=0;i<m1.length();i++)
for(j=0;j<m2.length();j++)
if(m1.charAt(i)==m2.charAt(j)){
intersection=intersection+m1.charAt(i);
m2.charAt(j)=' ';
}
System.out.println(intersection);
} while(devam==false);
}
}
这是我的密码。我们不允许使用方法或数组,我们只是初学者。我的代码在m2处给出了一个错误。charAt(j)=''
。我写这条线是因为,当我们找到一个交点时,我们不应该再检查那个元素。你能帮忙吗?
正如Brian所说,java中的字符串是不可变的。这意味着您不能通过像m2.charAt(j)=' '
这样的方法调用进行赋值。这意味着您必须使用另一种方式来跟踪您是否找到了该字符。
您可以将其添加到交
中,当检查字符时,请使用intersection.indexOf(char c)
来确保它不在交
中,如果返回-1,则它不在字符串中。
编辑:
抱歉没有考虑到输出应该是多集。上面解决了输出是集的问题。
您可以在m2上使用replace eFirst(String search chFor,字符串替换)
来删除它。
for( int i =0; i < m1.length(); i+=2)
{
if(m2.indexOf(m1.charAt(i)) != -1)
{
intersection = intersection + m1.charAt(1) + " ";
m2 = m2.replaceFirst(new String(m1.charAt(i)), "");
}
}
所以如果m1='1235'和m2='1421',
第一关:在“14 2 1”中寻找1
第二遍:在'4 2 1'中寻找1
第三遍:在'4 2'中寻找2
第四遍:在'4'中寻找3
第五关:在'4'中寻找5个
返回“11 2”
请注意,它是将变量增加2以考虑空格。只有当我们假设两个字符串是“a a a a a a a a”的形式,“a”只有一个字符时,才会这样做。如果有位数或字符超过一位数,那么你必须跳过空白,用不同的方式解释字符串,而不仅仅是逐个字符地看。
如果我们能做出这些假设,明智的做法是使用Stringtrim
方法iem1=m1来修剪m1的尾随和前导空格。执行此循环前修剪()。
不能使用修改字符串的内容
m2.charAt(j)=' ';
这样做吧
m2 = m2.replace(m2.charAt(j), ' ');
请注意,replace()将替换字符串中与第一个参数相等的第一个字符。我假设,因为字符串代表一个集合,所以不会是重复的字符。如果有,并且您想替换所有,只需使用replaceAll()。
问题内容: 我有两个排序集,并且想要进行交集,即。 关于效率,是否有比以下更好的方法: 问题答案: 您应该先使用ZCARD检查哪些元素较少,然后克隆并修剪较短的元素。 其次,您将剩下2个剩菜。您可以重复使用同一辅助程序,以加快清除速度。 我还想建议克隆使用DUMP和RESTORE,但是对于排序集的情况,ZUNIONSTORE实际上要快得多。这是一个100万个元素集的时间安排:
问题内容: 我试图根据某些条件并执行一些步骤来找到两个列表。在学习阶段找不到方法:) 如您所见,逻辑很简单 根据某个过滤器从订单中获取所有项目,并与另一个过滤器相交并做一些事情。 问题答案: 最简单的方法是这样的:
我已经读过一些其他的堆栈溢出线程: 在java中求两个多集的交集 我如何获得两个数组之间的交集作为一个新数组? 我试图检查两个数组以及它们的元素数(numElementsInX和numElementsInY),并返回一个包含数组x和y的公共值的新数组。他们的交集。 编辑代码
问题内容: 我有两个平面列表,其中一个包含重复值。例如, 我需要在array1中也找到array2中的值,并保留array1中的重复项。预期的结果将是 我想避免循环,因为实际数组将包含数百万个值。我尝试了各种布景和相交组合,但无法保留重复项。 任何帮助将不胜感激! 问题答案: 您是什么意思不想使用循环?您将不得不以一种或另一种方式对其进行迭代。只需单独放入每个项目,然后检查是否随身携带: 此外,根
问题内容: a = [1,1,1,2,3,4,4] >>> b = [1,1,2,3,3,3,4] 请注意,这不是一个相同的问题: 两个列表的Python交集保持重复 因为即使列表a中有三个1,列表b中也只有两个,所以结果应该只有两个。 问题答案: 您可以使用此方法,当您使用交叉路口时,它将为每个元素提供在任一列表中找到的最低计数。 输出 :
我有以下功能用于统一多个集合(包括重复元素): 如果集合的交集具有类似签名的函数(使用类型相等),那就太好了。例如: 我找到了一个相交函数的实现,但它不使用流: 是否有任何方法可以利用流实现类似于unify函数的功能?我在java8/StreamAPI方面没有太多经验,因为一些建议会非常有用。