有2个string[]分别存得汉字大约也就3-4个汉字无任何符号
string[] a
string[] b现在怎么样可以找出
a和b 中相差的名称?
例如a比b多3个名称
或b比a多5个名称
最终结果不管是谁比谁多出来,
主要是找出相差的这几个名称
有谁帮忙想个这样的算法哦..谢谢了
string[] a
string[] b现在怎么样可以找出
a和b 中相差的名称?
例如a比b多3个名称
或b比a多5个名称
最终结果不管是谁比谁多出来,
主要是找出相差的这几个名称
有谁帮忙想个这样的算法哦..谢谢了
-----------------------------------
String a[] 存着一 二 三 四 五 六
String b[] 存着二 四 六怎么样找出一 三 五 ?
string b="二四六";
MessageBox.Show(GetText(a, b));
private string GetText(string p_Text1, string p_Text2)
{
string _Value = p_Text1;
string _ReturnValue = p_Text1; if (p_Text2.Length < p_Text1.Length) _Value = p_Text2;
for (int i = 0; i != _Value.Length; i++)
{
_ReturnValue=_ReturnValue.Replace(_Value[i].ToString(),"");
}
return _ReturnValue;
}
using System.Collections.Generic;class Program
{
static void Main()
{
string[] a = { "二", "四", "六", };
string[] b = { "四", "一", "二", "六", "三", "五", };
if (a.Length < b.Length)
{
string[] c = a;
a = b;
b = c;
}
List<string> list = new List<string>();
foreach (string s in a)
{
if (Array.IndexOf<string>(b, s) < 0)
{
list.Add(s);
}
}
string t = string.Join(",", list.ToArray());
Console.WriteLine(t); // 一,三,五
}
}
{
string[] a ={ "一", "二", "三", "四", "五", "六" };
string[] b ={ "二", "四", "六" };
bool flag = false; for (int i = 0; i < a.Length ; i++)
{
for (int j = 0; j < b.Length; j++)
{
flag =false ;
if (a[i] == b[j])
{
flag = true;
break;
} }
if (flag == false)//a[i] != b[j],则输出a[i]
Console.WriteLine(a[i]);
}
Console.Read(); }
string[] b = { "四", "一", "二", "六", "三", "五" };
string[] c = Array.FindAll<string>(b, delegate(string s){
return Array.IndexOf<string>(a, s) == -1;
}
);
string[] d = Array.FindAll<string>(a, delegate(string s){
return Array.IndexOf<string>(b, s) == -1;
}
);
string[] result = new string[c.Length + d.Length];
c.CopyTo(result, 0);
d.CopyTo(result, c.Length);
foreach (string s in result)
{
Console.WriteLine(s);
}输出
一
三
五
八
string[] b = { "四", "一", "二", "六", "三", "五" };
ArrayList list;
if(a.Length>b.Length)//a-b,即a的元素比b多
{
list=new ArrayList(a);
foreach(string s in b)
{
list.Remove(s);
}
}
else//b-a
{
list=new ArrayList(b);
foreach(string s in a)
{
list.Remove(s);
}
}
list就是所求
using System.Collections.Generic;namespace ConsoleApplication1
{
class Program
{
static void Main()
{
string[] b = { "二a", "四", "六","八","办","成绩"};
string[] a = { "四", "一", "二b", "六", "三", "五","留" };
Array.Sort<string>(a);
Array.Sort<string>(b); Console.WriteLine("a[]:"+String.Join(",",a));
Console.WriteLine("b[]:" + String.Join(",",b));
int p = a.Length;
int q = b.Length;
string[] result = p > q ? GetDiffElements(a, b, p, q) : GetDiffElements(b, a, q, p);
foreach (string s in result)
{
Console.WriteLine(s);
}
} static string[] GetDiffElements(string[] a,string[] b,int p,int q)
{
List<string> c = new List<string>();
if (b[0].CompareTo(a[p - 1]) > 0 || b[q - 1].CompareTo(a[0]) < 0)//2个数组没有相同元素,全部输出a,b
{
c.AddRange(a);
c.AddRange(b);
}
else
{
int m = 0;
int t = 0;
int k = 0;
bool flag;
while (m<q)
{
flag = false;
for (int i = t; i < p; i++)
{
if (b[m].Equals(a[i]))
{
t = i+1;
flag = true;
break;
}
} if (!flag) c.Add(b[m]);
else
{
if (t - k >2)
{
int st = k + 1;
if (k == 0) st = 0;
for (int i = st; i < t - 1; i++)
{
c.Add(a[i]);
}
}
k = t - 1;
} if (m == q - 1)
{
for (int i = k + 1; i < p; i++)
{
c.Add(a[i]);
}
}
m++;
}
}
return c.ToArray();
} }
}输出
a[]:二b,留,六,三,四,五,一
b[]:八,办,成绩,二a,六,四
八
办
成绩
二a
二b
留
三
五
一
请按任意键继续. . .