【算法】两个数组字符串去重追加

1 数组去重

python实现

#调用内置函数去重
def func(str):
	len1=len(str)
	len2=len(list(set(str)))
	print("去重后的结果是:",list(set(str)),"\t去重个数是:",(len1-len2))
#for 循环去重
def func1(str):
	nums=[]
	for n in str:
		if n not in nums:
			nums.append(n)
	print("去重后的结果是:",sorted(nums),"\t去重个数是:",(len(str)-len(nums)))
# while去重
def func2(str):
	len1=len(str)
	for n in str:
		while str.count(n)>1:
			del str[str.index(n)]
	print("去重后的结果是:",sorted(str),"\t去重个数是:",(len1-len(str)))

str=[1,3,2,4,2,4,1,6,4,5]
func2(str)

字典去重

#调用内置函数去重
def func(str):
	len1=len(str.values())
	len2=len(list(set(str.values())))
	print("去重后的结果是:",list(set(str.values())),"\t去重个数是:",(len1-len2))
#for 循环去重
def func1(str):
	nums=[]
	for n in str.values():
		if n not in nums:
			nums.append(n)
	print("去重后的结果是:",sorted(nums),"\t去重个数是:",(len(str.values())-len(nums)))

str=[1,3,2,4,2,4,1,6,4,5]
dirc={1:1,2:2,3:3,4:3}
func2(dirc)

字符串追加去重排序

#调用内置函数去重
def func(str1,str2):
	print("去重后的结果是:",sorted(set(str1+str2)),"\t去重个数是:",(len(str1+str2)-len(set(str1+str2))))

#for 循环去重
def func1(str1,str2):
	nums=[]
	str=str1+str2
	for n in str:
		if n not in nums:
			nums.append(n)
	print("去重后的结果是:",sorted(nums),"\t去重个数是:",(len(str)-len(nums)))
# while去重
def func2(str1,str2):
	str=str1+str2
	for n in str:
		while str.count(n)>1:
			del str[str.index(n)]
	print("去重后的结果是:",sorted(str),"\t去重个数是:",(len(str1+str2)-len(str)))

str1=[‘很好‘,‘不错‘,‘很好‘,‘Very‘,‘Book‘,‘I‘,‘Love‘,‘I‘]
str2=[‘Java‘,‘C#‘,‘Python‘,‘C#‘]
func2(str1,str2)

Java实现

import java.util.LinkedList;
import java.util.List;

public class func {
	public static void unique(String[] str){
		// array_unique
	    List<String> list = new LinkedList<String>();
	    for(int i = 0; i < str.length; i++) {
	        if(!list.contains(str[i])) {
	            list.add(String.valueOf(str[i]));
	        }
	    }
	    System.out.print("去重后的结果:"+list+"\t 共去重个数:"+(str.length-list.size()));
	}
	public static void main(String[] args){
		String[] str={"1","3","2","4","2","4","1","6","4","5"};
		unique(str);
	}

}

set实现

import java.util.HashSet;
import java.util.Set;

public class func {
	public static void unique(String[] str){
		Set<String> set = new HashSet<String>();
        for (int i=0; i<str.length; i++) {
            set.add(str[i]);
        }
	    System.out.print("去重后的结果:"+set+"\t 共去重个数:"+(str.length-set.size()));
	}
	public static void main(String[] args){
		String[] str={"Python","SQL","C#","Java","C","Python","R","Matlab","C++","SQL"};
		unique(str);
	}
}
时间: 2024-08-09 10:42:58

【算法】两个数组字符串去重追加的相关文章

js 数组&amp;字符串 去重

Array.prototype.unique1 = function() { var n = []; //一个新的临时数组 for(var i = 0; i < this.length; i++) //遍历当前数组 { //如果当前数组的第i已经保存进了临时数组,那么跳过, //否则把当前项push到临时数组里面 if (n.indexOf(this[i]) == -1) n.push(this[i]); } return n; } Array.prototype.unique2 = funct

数组去重和两个数组求交集

引言 今天在项目中一个功能要用到两个数组求交集的算法. 大概是这样: 两个表格分别用easyui datagrid实现,要把A表格的一列数据和B表格的一列数据取出来,然后去重,去重后求交集. 那么在计算出的交集中分别根据求出的数据选中两个表格的对应行. 故用到js数组去重和求交集. 交集 Array.prototype.intersect = function(b) { var flip = {}; var res = []; for(var i=0; i< b.length; i++) fli

C#两路list数组归并去重

两个相同类型已排序数据进行合并,虽然list数组中有AddRange方法,但它只是把第二个数组从第一个数组末尾插入,假如两个数组有重复数据,保存进去.还有Union方法合并去重,首先会从第一个数组进行检查然后再把第二个数组数据从第一个数组依次从末尾插入,但相对于自定义类型排序还是不能有效解决问题. 归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用.将已有序的子序列合并,得到完全有序的序列:即先使每个子序列有序,再使子序

java 数据结构 图中使用的一些常用算法 图的存储结构 邻接矩阵:图的邻接矩阵存储方式是用两个数组来标示图。一个一位数组存储图顶点的信息,一个二维数组(称为邻接矩阵)存储图中边或者弧的信息。 设图G有n个顶点,则邻接矩阵是一个n*n的方阵,定义为: 实例如下,左图是一个无向图。右图是邻接矩阵表示:

以下内容主要来自大话数据结构之中,部分内容参考互联网中其他前辈的博客. 图的定义 图是由顶点的有穷非空集合和顶点之间边的集合组成,通过表示为G(V,E),其中,G标示一个图,V是图G中顶点的集合,E是图G中边的集合. 无边图:若顶点Vi到Vj之间的边没有方向,则称这条边为无项边(Edge),用序偶对(Vi,Vj)标示. 对于下图无向图G1来说,G1=(V1, {E1}),其中顶点集合V1={A,B,C,D}:边集合E1={(A,B),(B,C),(C,D),(D,A),(A,C)}: 有向图:若

String 字符串的追加,数组拷贝

package chengbaoDemo; import java.util.Arrays; /** *需求:数组的扩容以及数据的拷贝 *分析:因为String的实质是以字符数组存储的,所以字符串的追加,<br> *实质上是数组的扩容,数据的移动(复制) * */ public class TestString { public static void main(String[] args) { String src = new String("src"); String

JS实现字符串去重,数组去重

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>去重</title> 6 </head> 7 <body> 8 <script type="text/javascript"> 9 /*数组去重*/ 10 function quch

快速求两个数组交集算法

快速求出两个数组的交集的算法,如果用循环遍历的方法,其时间复杂度为O(N^N),在面试中一般不考虑这种方法. 这里提供一种快速算法,算法实现步骤如下: 1. 找到arr1的最大数max,创建一个max+1大小的数组result. 2. 以arr1中的值作为result的下标,该索引处的值+1. 3. 在result数组中遍历arr2中的值为下标处的值,如果该索引值不为0,则代表该值是两者的交集,保留. 程序实现如下: /** * 求两个数组的交集 * @param arr1 * @param a

[算法]两字符串的最长子串

abractyeyt,dgdsaeactyey的最长子串为actyey const int maxSize = 100; char suffix[2][maxSize][maxSize]; int max_sub(char* s1, int len1, char* s2, int len2){ for(int r = 0; r < 2; ++r){ char* s; int len; if(0 == r){ s = s1; len = len1; } else{ s = s2; len = le

两个数组去重合并

import java.util.HashSet; import java.util.Set; public class Demo2 { /* * 两个数组去重合并 */ public static void main(String[] args) { //初始化测试数据 int[] a = {1,3,3,2}; int[] b = {3,3,5,6}; //使用set类的HashSet对象保存两个数组中的值,因为该对象内的数值不允许重复,所以会自动删除数组中的重复值 Set c = new H