C# 数组中怎么去除所有重复的字符串?
如果我有一个字符串数组里面放了N个相同和不相同的元素,我想取出所有不相同的元素!比如有10个:strings[]=newstring[10]{"aaa","bbb","a...
如果我有一个字符串数组 里面放了N个相同和不相同的元素,我想取出所有
不相同的元素!
比如有10个: string s[]=new string[10]{"aaa","bbb","aaa","ccc","bbb","ddd","ccc","aaa","bbb","ddd"}
元素次序是随机的,该用什么算法实现 最好能做个例子,谢谢! 展开
不相同的元素!
比如有10个: string s[]=new string[10]{"aaa","bbb","aaa","ccc","bbb","ddd","ccc","aaa","bbb","ddd"}
元素次序是随机的,该用什么算法实现 最好能做个例子,谢谢! 展开
5个回答
展开全部
string[] stringArray = { "aaa", "bbb", "aaa", "ccc", "bbb", "ddd", "ccc", "aaa", "bbb", "ddd" };
//List用于存储从数组里取出来的不相同的元素
List<string> listString = new List<string>();
foreach (string eachString in stringArray)
{
if (!listString.Contains(eachString))
listString.Add(eachString);
}
//最后从List里取出各个字符串进行操作
foreach (string eachString in listString)
{
Console.Write(eachString); //打印每个字符串
}
//List用于存储从数组里取出来的不相同的元素
List<string> listString = new List<string>();
foreach (string eachString in stringArray)
{
if (!listString.Contains(eachString))
listString.Add(eachString);
}
//最后从List里取出各个字符串进行操作
foreach (string eachString in listString)
{
Console.Write(eachString); //打印每个字符串
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你数组定义写成c/c++的格式了。应该是:string[]
s你学过集合了吗,用它最方便了。
list<string>
list1
=
new
list<string>();
//创建3个泛型集合list1、list2、list3,指定元素类型为string
list<string>
list2
=
new
list<string>();
list<string>
list3
=
new
list<string>();
list1.addrange(s);
//把你的数组s里的元素都添加到集合list1里。
list2.addrange(s);
list3=list1.union(list2).tolist<string>();/*得到list1、list2两个集合元素的并集,并转换为集合返回给list3
得到的并集,其实就去掉了重复项了。*/
你也可以用for循环来逐一比对。因为你是要取得不同的元素,同样得定义集合来存放它们。集合长度是不限定的。
因为数组的长度是定义时就确定了,但此时不知道有几个不同的元素啊。所以不能用数组来存,得用集合来。
for(int
i=0;i<s.length-1;i++)
{
for(int
j=1;j<s.length-1;j++)
{
if(s[i]==s[j])
{
list1.add(s[i]);//若两个元素相等,就添加到集合里。
}
}
}
s你学过集合了吗,用它最方便了。
list<string>
list1
=
new
list<string>();
//创建3个泛型集合list1、list2、list3,指定元素类型为string
list<string>
list2
=
new
list<string>();
list<string>
list3
=
new
list<string>();
list1.addrange(s);
//把你的数组s里的元素都添加到集合list1里。
list2.addrange(s);
list3=list1.union(list2).tolist<string>();/*得到list1、list2两个集合元素的并集,并转换为集合返回给list3
得到的并集,其实就去掉了重复项了。*/
你也可以用for循环来逐一比对。因为你是要取得不同的元素,同样得定义集合来存放它们。集合长度是不限定的。
因为数组的长度是定义时就确定了,但此时不知道有几个不同的元素啊。所以不能用数组来存,得用集合来。
for(int
i=0;i<s.length-1;i++)
{
for(int
j=1;j<s.length-1;j++)
{
if(s[i]==s[j])
{
list1.add(s[i]);//若两个元素相等,就添加到集合里。
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
方法有很多,这里提一种,先对数组进行排序,然后删除重复项,代码如下,
using System;
using System.Collections.Generic;
using System.Text;
namespace 排除重复行
{
class Program
{
static void Main(string[] args)
{
String[] a ={"aaa","bbb","aaa","ccc","bbb","ddd","ccc","aaa","bbb","ddd" };
Console.WriteLine("原数组长度: {0}", a.Length);
Console.WriteLine("排除后数组长度:{0}",RemoveDup(a).Length);
Console.ReadKey();
}
public static String[] RemoveDup(String[] myData)
{
if (myData.Length > 0)
{
Array.Sort(myData);
int size = 1; //at least 1
for (int i = 1; i < myData.Length; i++)
if (myData[i] != myData[i - 1])
size++;
String[] myTempData = new String[size];
int j = 0;
myTempData[j++] = myData[0];
for (int i = 1; i < myData.Length; i++)
if (myData[i] != myData[i - 1])
myTempData[j++] = myData[i];
return myTempData;
}
return myData;
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace 排除重复行
{
class Program
{
static void Main(string[] args)
{
String[] a ={"aaa","bbb","aaa","ccc","bbb","ddd","ccc","aaa","bbb","ddd" };
Console.WriteLine("原数组长度: {0}", a.Length);
Console.WriteLine("排除后数组长度:{0}",RemoveDup(a).Length);
Console.ReadKey();
}
public static String[] RemoveDup(String[] myData)
{
if (myData.Length > 0)
{
Array.Sort(myData);
int size = 1; //at least 1
for (int i = 1; i < myData.Length; i++)
if (myData[i] != myData[i - 1])
size++;
String[] myTempData = new String[size];
int j = 0;
myTempData[j++] = myData[0];
for (int i = 1; i < myData.Length; i++)
if (myData[i] != myData[i - 1])
myTempData[j++] = myData[i];
return myTempData;
}
return myData;
}
}
}
参考资料: http://www.yongfa365.com/Item/CRuHeXiaoChuZiFuChuanShuZuDeZhongFuXiangDeHanShu.html
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
ArrayList arrayList = new ArrayList();
很简单的实现你的需求
很简单的实现你的需求
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
String[] a ={"aaa","bbb","aaa","ccc","bbb","ddd","ccc","aaa","bbb","ddd" };
string b="";//用于存储已取出的元素
string[] newa;
int j=0;
for(int i=0;i<a.Length-1;i++)
{
if(b.indexOf(a[i])==-1)
{
//此时可以提取元素
newa[j]=a[i]
b=b+"|"+a[i]
j++;
}
}
string b="";//用于存储已取出的元素
string[] newa;
int j=0;
for(int i=0;i<a.Length-1;i++)
{
if(b.indexOf(a[i])==-1)
{
//此时可以提取元素
newa[j]=a[i]
b=b+"|"+a[i]
j++;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询