java两个int数组判断不重复的值,有难度
比如数组A[1,6,3,1,8]数组B[1,3,6]要求取出1,8需求:三个数成为一个组合后要求出剩余两个的值,现在已知道两个数组,就是求出A数组中除了B数组中的组合剩余...
比如数组A[1,6,3,1,8] 数组B [1,3,6]
要求取出 1,8
需求:三个数成为一个组合后 要求出剩余两个的值,现在已知道两个数组,就是求出A数组中 除了B数组中的组合剩余的两个值
小弟的笨办法:
public static String intersection(int[] A, int[] B) {
Arrays.sort(A);
Arrays.sort(B);
String str1 = Arrays.toString(A);
String str2 = Arrays.toString(B);
str1 = str1.substring(1,str1.length()-1).replaceAll(", ", "");
str2 = str2.substring(1,str2.length()-1).replaceAll(", ", "");
str1 = str1.replace(str2, "");
return str1;
}
} 展开
要求取出 1,8
需求:三个数成为一个组合后 要求出剩余两个的值,现在已知道两个数组,就是求出A数组中 除了B数组中的组合剩余的两个值
小弟的笨办法:
public static String intersection(int[] A, int[] B) {
Arrays.sort(A);
Arrays.sort(B);
String str1 = Arrays.toString(A);
String str2 = Arrays.toString(B);
str1 = str1.substring(1,str1.length()-1).replaceAll(", ", "");
str2 = str2.substring(1,str2.length()-1).replaceAll(", ", "");
str1 = str1.replace(str2, "");
return str1;
}
} 展开
3个回答
展开全部
package test;
import java.util.Arrays;
public class MyTester
{
private static String resolve ( int[] A, int[] B )
{
String s1 = Arrays.toString (A).replaceAll ("\\s", "").replaceAll ("[\\[\\]]", ",");
for ( int i = 0; i < B.length; i++ )
{
if (s1.indexOf (B[i]) == -1)
{
s1 = s1.replaceFirst ("," + B[i] + ",", ",");
}
}
return s1.replaceAll ("^\\,|\\,$", "");
}
public static void main ( String[] args )
{
int[] A = { 1, 6, 3, 1, 8 };
int[] B = { 1, 3, 6 };
String s1 = resolve (A, B);
System.out.println (s1);
A = new int[] { 4, 3, 3, 3, 2 };
B = new int[] { 3, 3, 4 };
s1 = resolve (A, B);
System.out.println (s1);
}
}
追问
很感谢大神啊。thanks,比我写的好多了。。奉上小弟写的笨办法。
追答
还可以改进
展开全部
不重复的值就是求a和b数组的差集:
参考代码如下:
//求两个数组的差集
public static String[] minus(String[] arr1, String[] arr2) {
LinkedList<String> list = new LinkedList<String>();
LinkedList<String> history = new LinkedList<String>();
String[] longerArr = arr1;
String[] shorterArr = arr2;
//找出较长的数组来减较短的数组
if (arr1.length > arr2.length) {
longerArr = arr2;
shorterArr = arr1;
}
for (String str : longerArr) {
if (!list.contains(str)) {
list.add(str);
}
}
for (String str : shorterArr) {
if (list.contains(str)) {
history.add(str);
list.remove(str);
} else {
if (!history.contains(str)) {
list.add(str);
}
}
}
String[] result = {};
return list.toArray(result);
}
}
参考代码如下:
//求两个数组的差集
public static String[] minus(String[] arr1, String[] arr2) {
LinkedList<String> list = new LinkedList<String>();
LinkedList<String> history = new LinkedList<String>();
String[] longerArr = arr1;
String[] shorterArr = arr2;
//找出较长的数组来减较短的数组
if (arr1.length > arr2.length) {
longerArr = arr2;
shorterArr = arr1;
}
for (String str : longerArr) {
if (!list.contains(str)) {
list.add(str);
}
}
for (String str : shorterArr) {
if (list.contains(str)) {
history.add(str);
list.remove(str);
} else {
if (!history.contains(str)) {
list.add(str);
}
}
}
String[] result = {};
return list.toArray(result);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这么简单的题目都不会啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |