有2个string[]分别存得汉字大约也就3-4个汉字无任何符号
string[] a
string[] b现在怎么样可以找出
a和b 中相差的名称?
例如a比b多3个名称
  或b比a多5个名称
最终结果不管是谁比谁多出来,
主要是找出相差的这几个名称
有谁帮忙想个这样的算法哦..谢谢了

解决方案 »

  1.   

    首先感谢楼上的几位朋友都这么热心..
    -----------------------------------
    String a[] 存着一 二 三 四 五 六
    String b[] 存着二 四 六怎么样找出一 三 五 ?
      

  2.   

    string a="一二三四五六";
    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;
            }
      

  3.   

    using System;
    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);  // 一,三,五
      }
    }
      

  4.   

    static void Main(string[] args)
            {
                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();        }
      

  5.   

    string[] a = { "二", "四", "六","八" };
                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);
                }输出




      

  6.   

    string[] a = { "二", "四", "六"};
    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就是所求
      

  7.   

    using System;
    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




    请按任意键继续. . .