面试题(一)数组

面试, 碰到这么一个古怪笔试题, 花了10分钟才看懂题目, 要了两张草稿纸也没作出来, 汗!无脸见人! 大家来讨论一下

题目: 将一个交错数据合并为一个一维数组
输入: strJaggedArray[][], 由多个一维数组(长度不定,个数不定)组成的交错数组
输出: strArray[], 由strJaggedArray[r][c]中的元素以"&"为分隔符拼合而成, 是strJaggedArray中数组元素的无重复组合(不考虑顺序)

举例: 
输入: strJaggedArray[0]=new string[] {"we","are","student"};
      strJaggedArray[1]=new string[] {"say","what"};
输出: strArray[]={"we&say","we&what","are&say","are&what","student&say","student&what"}

输入: strJaggedArray[0]=new string[] {"cs","app"};
      strJaggedArray[1]=new string[] {"good","cool","dev"};
      strJaggedArray[2]=new string[] {"king","of","the","world"};
输出: strArray[]={"cs&good&king","cs&good&of","cs&good&the","cs&good&world","cs&cool&king","cs&cool&of","cs&cool&the","cs&cool&world",...}

答案:

string[][] a = new string [3][];
            a[0] = new string[] { "cs", "app" };
            a[1] = new string[] { "good", "cool", "dev" };
            a[2] = new string[] { "king", "of", "the", "world" };
            System.Collections.ArrayList arrlist = new System.Collections.ArrayList();
            int[] index = new int[a.Length];

            while (index[0] < a[0].Length)
            {
                string temp = "";
                for (int i = 0; i < index.Length; i++)
                {
                    temp += a[i][index[i]] + "&";
                }

                arrlist.Add(temp.Substring(0, temp.Length-1));

                index[index.Length - 1]++;

                for (int i = index.Length - 1; i > 0; i--)
                {
                    if (index[i] >= a[i].Length)
                    {
                        index[i] = 0;
                        index[i - 1]++;
                    }
                }
            }

            Array b = arrlist.ToArray(typeof(string));

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值