none
一道算法题 在线等 请前辈前来赐教 RRS feed

  • 问题

  • String s1 = "AABBCCDDEE";
    String s2="ABCD";
    输出相等的
    如何让答案输入是A B C D AB BC CD
    如可以请上code。
    2010年5月18日 3:46

答案

  •  string a = "AABBCCDDEEFF";
            string b = "ABCDEG";
            StringBuilder xxx = new StringBuilder();
            List<string> list = new List<string>();
            for (int i = 0; i < b.Length; i++)
            {
                string d = b.Substring(i, 1);
                list.Insert(i, d);
            }
            for (int v = 0; v < list.Count; v++)
            {
                Regex rg = new Regex(list[v], RegexOptions.IgnoreCase);
                Match mt = rg.Match(a);
                if (mt.Success)
                {
                    xxx.Append(mt.ToString() + "_");
                }
                int ind = v;
                if (v < b.Length - 1)
                {
                    ind++;
                }
                Regex rg2 = new Regex(list[v] + "[" + b.Substring(ind) + "]", RegexOptions.IgnoreCase);
                Match mt2 = rg2.Match(a);
                if (mt2.Success)
                {
                    xxx.Append(mt2.ToString() + "_");
                }
            }
            Response.Write(xxx.ToString());

    自己解决了请前辈指教下对不对

    • 已标记为答案 鬼宿 2010年5月18日 4:37
    2010年5月18日 4:37
  • 你好!

         你的意思是s2所有的排列组合是否在s1中包含吧!

         你需要写循环遍历所有排列组合,然后使用String的Contains方法来判断是否在s1中包含这个字符串序列!


    周雪峰
    • 已标记为答案 鬼宿 2010年5月18日 6:45
    2010年5月18日 6:00
    版主

全部回复

  •  string a = "AABBCCDDEEFF";
            string b = "ABCDEG";
            StringBuilder xxx = new StringBuilder();
            List<string> list = new List<string>();
            for (int i = 0; i < b.Length; i++)
            {
                string d = b.Substring(i, 1);
                list.Insert(i, d);
            }
            for (int v = 0; v < list.Count; v++)
            {
                Regex rg = new Regex(list[v], RegexOptions.IgnoreCase);
                Match mt = rg.Match(a);
                if (mt.Success)
                {
                    xxx.Append(mt.ToString() + "_");
                }
                int ind = v;
                if (v < b.Length - 1)
                {
                    ind++;
                }
                Regex rg2 = new Regex(list[v] + "[" + b.Substring(ind) + "]", RegexOptions.IgnoreCase);
                Match mt2 = rg2.Match(a);
                if (mt2.Success)
                {
                    xxx.Append(mt2.ToString() + "_");
                }
            }
            Response.Write(xxx.ToString());

    自己解决了请前辈指教下对不对

    • 已标记为答案 鬼宿 2010年5月18日 4:37
    2010年5月18日 4:37
  • 你好!

         你的意思是s2所有的排列组合是否在s1中包含吧!

         你需要写循环遍历所有排列组合,然后使用String的Contains方法来判断是否在s1中包含这个字符串序列!


    周雪峰
    • 已标记为答案 鬼宿 2010年5月18日 6:45
    2010年5月18日 6:00
    版主
  • 还是没看懂到底是需要什么结果。。。如果象周雪峰所说,是要去 Match string2 的所有可能组合的话,上面的代码又不对。还是先让楼主把问题描述清楚吧。
    Mark Zhou
    2010年5月18日 9:46