X="110001100001100101";switch (X)
                {
                    case "110001100001100101":
                        a = "0";
                        break;
                    case "000100000110010100":
                        a = "1";
                        break;
                    case "000001001011001101":
                        a = "2";
                        break;
............................................如果是找出相同的一条字符串我们可以用上面的switch的方式..但如果要从几百条记录只找出最相似的一条记录应该怎么写呢?(相似是指字符串的相同位数的字符不同数最少) 。假如我的x="110001100001100111";怎么找出最相似他的一条记录呢? 
注:每条都是0101字符串的长度都相等!

解决方案 »

  1.   

    给你个提示...字符串都是可枚举的字符数组,可以用Linq...
      

  2.   

    遍历打分。
    int grade = 0;
    for(i为0到n-1)
    {
      待比较字符串[i] = 提供字符串[i];
       grade++;
    }每个字符串都这样打个分,取分高的
      

  3.   


    你好。linq的哪个怎么用呀?
      

  4.   

    private void button3_Click(object sender, EventArgs e)
            {
                string X="110001100001100101"; //原始字符串
                ArrayList al = new ArrayList();
                al.Add("110001100001100101");
                al.Add("000100000110010100");
                al.Add("000001001011001101");
                string s="";//记录相似字符串
                int i = 0;//记录相似程度            
                for(int i=0;i<al.Count;i++)
                {
                    int equals=StringEquals(X,al[i].ToString());
                    if (equals > i)
                    {
                        s = al[i].ToString();
                        i = equals;
                    }
                }
            }
            //
            private int StringEquals(string a1, string a2)
            {
                int sum=0;//相似程度越大,sum值越大
                if (a1.Length = a2.Length)//长度不相同的不比较
                {
                    for (int i = 0; i < a1.Length; i++)
                    {
                        if (a1[i].Equals(a2[i]))
                        {
                            sum=sum+1;
                        }
                    }
                }
            }
      

  5.   


    呵呵我改好了。并输出了我想要的结果。正确代码如下:       private void button2_Click(object sender, EventArgs e)
            {
                string X = "110001100001100108"; //原始字符串 
                ArrayList al = new ArrayList();
                al.Add("110001100001100000");
                al.Add("000100100110010100");
                al.Add("110101101001100111");
         
                string s = "";//记录相似字符串 
                int zz=0;//记录相似程度            
                for (int i=0; i < al.Count; i++)
                {
                    int equals = StringEquals(X, al[i].ToString());
                    if (equals > zz)
                    {
                        s = al[i].ToString();
                        zz = equals;
                    }
                }            MessageBox.Show(s);
            }
            // 
            private int StringEquals(string a1, string a2)
            {
                int sum = 0;//相似程度越大,sum值越大 
                if (a1.Length == a2.Length)//长度不相同的不比较 
                {
                    for (int i = 0; i < a1.Length; i++)
                    {
                        if (a1[i].Equals(a2[i]))
                        {
                            sum = sum + 1;
                        }
                    }
                }
                return sum;
            }