由于机子上没有Java开发环境,给个思路吧:
把第二个字符串转成数组,然后遍历一遍,把第一个字符串中包含的部分替换掉就行了
以“,”作为分隔符号,str调用replace方法将指定的子字符串替换掉就可以了。
可以考虑把这两个字符串看成两个集合,针对后面在的集合str1在集合str中查找是否存在相同的元素,这样可以使用Hashset来实现,但是算法效率很低,应该从算法上来考虑优化。
可不可以用代码实现给我看看,,求??
HashSet<String> h1 = new HashSet<String>();
HashSet<String> h2 = new HashSet<String>();
for(int i=0;i<str.split(",").length;i++){
h1.add(str.split(",")[i]);
}
for(int i=0;i<str1.split(",").length;i++){
h2.add(str1.split(",")[i]);
}
h1.removeAll(h2);
最后打印h1就可以了。一些别的情况没有考虑,自己改就好了。
public static void main(String[] args){
String[] a = new String[]{"1","5","3","7"};
String[] b = new String[]{"2","3","4"};
String[] arrResult = arrContrast(a, b);
for (String strResult : arrResult) {
System.out.println("最后的结果:----------->" + strResult);
}
}
//处理数组字符
private static String[] arrContrast(String[] arr1, String[] arr2){
List<String> list = new LinkedList<String>();
for (String str : arr1) { //处理第一个数组,list里面的值为1,2,3,4
if (!list.contains(str)) {
list.add(str);
}
}
for (String str : arr2) { //如果第二个数组存在和第一个数组相同的值,就删除
if(list.contains(str)){
list.remove(str);
}
}
String[] result = {}; //创建空数组
return list.toArray(result); //List to Array
}