有一组字符串,它位于一台远程服务器上(http://kj.edu24ol.com/update/qa/qa1.txt),需要对它进行远程读取并按照规则进行逐行排序。排序规则:1. 字符规则(注意:区分大小写):j<a<G<g<8<r<D<f<U<b<W2. 最后一列(1,2,3,4,5)需出现在排序后的第一列3. 排序后输出的内容格式保持不变(即两两一组,以空格隔开)解答规则:1. 可使用C#/JavaScript,任意一种编程语言实现2. 提交分析思路,以文字形式表达3. 提交输出截图,程序编译完毕之后运行输出的内容(即排序后的结果)截图

解决方案 »

  1.   

    字符规则(注意:区分大小写):j<a<G<g<8<r<D<f<U<b<W 这没明白意思,
      

  2.   

    w1 b1 Bb Ba 5f 6G kk 1p UG 8y 1
    aY 7A a5 B7 cc Dc 22 ui Id rg 2
    nc 2e Fa AA TF g1 uh WS Q1 6T 3
    gt TY UB W1 1d pG 5h EE 12 WS 4
    05 61 31 RG de 01 4R FF 23 fd 5
    题中的字符串如上面所示
      

  3.   


    明显这个文本里不止你排序规则里提到的那些字符,规则没有涉及到那些字符,怎么排序呢?还是说,除了这些字符意外,其他的字符按照普通ASCII字符排序规则?
      

  4.   

    楼主没说清楚是按什么排序?????要是你都不理解的话,你先问出题的人。字符规则(注意:区分大小写):j<a<G<g<8<r<D<f<U<b<W 到底是什么意思,这个是关键
      

  5.   


    http://bbs.csdn.net/topics/390307484
      

  6.   

    根据这个题目确实看不出来要怎么排序,按照自己的理解写了一点,没有整完,下班了 //获取数据
                System.Net.WebClient client = new System.Net.WebClient();
                byte[] getdata = client.DownloadData("http://kj.edu24ol.com/update/qa/qa1.txt");            string getString = System.Text.Encoding.UTF8.GetString(getdata);            //分割数据
                List<string> getSplitedArr = getString.Split(new string[] { "\r\n" }, StringSplitOptions.None).ToList();
                List<string> getArr = new List<string>();
                getSplitedArr.All(a =>
                {
                    List<string> childArr = a.Split(' ').ToList();
                    //这里先把自由的数字1,2,3,4,5删除
                    childArr.RemoveAt(childArr.Count - 1);
                    getArr.AddRange(childArr);
                    return true;
                });            //定义排序规则
                Dictionary<char, int> diction = new Dictionary<char, int>();
                diction.Add('j', 1);
                diction.Add('a', 2);
                diction.Add('G', 3);
                diction.Add('g', 4);
                diction.Add('8', 5);
                diction.Add('r', 6);
                diction.Add('D', 7);
                diction.Add('f', 8);
                diction.Add('U', 9);
                diction.Add('b', 10);
                diction.Add('W', 11);
                //排序
                getArr.Sort(new Comparison<string>(
                    (a, b) =>
                    {
                        if (!diction.ContainsKey(a[0]) || !diction.ContainsKey(b[0]))
                        {
                            return 0;
                        }
                        if (diction[a[0]] > diction[b[0]])
                        { return 1; }
                        else if (diction[a[0]] < diction[b[0]])
                            return -1;
                        else
                        {
                            if (diction[a[1]] > diction[b[1]])
                            {
                                return 1;
                            }                        else if (diction[a[1]] < diction[b[1]])
                            {
                                return -1;
                            }
                            else
                            {
                                return 0;
                            }
                        }
                    }));            //排序后再合并就可以了,省略
      

  7.   

    给出点思路,代码懒的写,
    对得到的字符串以行为单位进行解析  去掉最后那个数字(这个数字要放最前面的)
    j<a<G<g<8<r<D<f<U<b<W 
    dictionary<String,int> 这里的每个字母给对应一个数组(ArrayList[12]) 
    int 对应ArrayList[]中的每个索引 ArrayList[11]对应其他字母 (除了上面有排序规则以外的) 
    遍历字符串(去掉空格和最后那个数字) 对号入座填入 ArrayList里 最后 按照数组顺序输出字符
    最后数字+数组输出数字 然后两两格式化。
    注:因为是面试题,所以有些字母不在排序规则里很可能是面试者给放的一个坎,我认为将他们都放在最后说明下即可。
     
     
      

  8.   

    改正下:用HashTable替代上面的Dictionary更好一点  对不在里面的字符判断更方便点
      

  9.   

    应该是说的排列优先级吧j<a<G<g<8<r<D<f<U<b<W
      

  10.   

    我也收到这样的题了class Program
        {
            static void Main(string[] args)
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(@"http://kj.edu24ol.com/update/qa/qa1.txt"));
                request.Method = "GET";
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                using (StreamReader sr = new StreamReader(response.GetResponseStream())) 
                {
                    while(sr.Peek() > 0)
                    {
                        string line = sr.ReadLine().Trim();
                        int iLastSpace = line.LastIndexOf(" ");
                        string newLine = line.Substring(iLastSpace + 1) + " " + SortLine(line.Substring(0,iLastSpace));
                        Console.WriteLine(newLine);
                    }
                }
                Console.ReadLine();
            }        static string SortLine(string str) 
            {
                string retStr = string.Empty;
                int[] SortedArr = new int['z'-'0'+1];
                foreach(char c in str)
                {
                    if (c == ' ') continue;
                    SortedArr[c-'0']++;
                }
                int length = 0;            for (int i = 0; i < SortedArr.Length;i++ )
                {
                    while (SortedArr[i] > 0)
                    {
                        length++;
                        retStr += (char)(i + '0');
                        if (length==2)
                        {
                            retStr += " ";
                            length = 0;
                        }
                        SortedArr[i]--;
                    }
                }
                return retStr.Trim();
            }
        }
      

  11.   

    有些公司面试出题的人自以为是,去模仿一些大公司的做法。可知它自己没大公司的那个水平。
    我以前去面试,遇到过这样一个变态的题:.net中唯一不继承自Object的类。       本来想写下这个类就是Object,但想了想你说Object没有继承自Object,那我也可以说Object继承了Object,它自己有他自己的所有属性与方法。所以我就什么也没有写。。后来那公司人事部的人就直接让我走了,没让技术部的人面。
    甚至后来我也怀疑是不是我自己错了,.net中确实存在一个这样的类。
      

  12.   


    就当它是abcde...好了
    只不过这里j=a a=b G=c 这样子这里元素是有限个的,所以我觉得可以用桶式排序来写
      

  13.   

    这位大牛 是csdn的'google'啊 。 能扒出来好多原帖~~~~~佩服佩服!!
      

  14.   

    1  11 15 6a GG 8f Ub bB Bk kp wy
    2  22 57 7a ag rD AB IY cc cd iu
    3  11 26 ag WA AF FQ ST Tc eh nu
    4  11 12 5G gU WW BE ES TY dh pt
    5  00 11 12 33 45 6G fF FR Rd de----------------------
    1  yw pk kB Bb bU f8 GG a6 51 11
    2  ui dc cc YI BA Dr ga a7 75 22
    3  un he cT TS QF FA AW ga 62 11
    4  tp hd YT SE EB WW Ug G5 21 11
    5  ed dR RF Ff G6 54 33 21 11 00原来是同一家公司,以上我做的结果
    就理解成单纯的字符提序,字符串,字典
      

  15.   


    很想知道那个类是什么~~  
      别跟我说是Object就行~
      

  16.   

    http://bbs.csdn.net/topics/390344459?page=1#post-393452740答案~~