回 帖 发 新 帖 刷新版面

主题:一个程序员面试题

程序员面试时有一个这样的题:
编写一个函数.能实现以下功能:
输入                   输出
B1~3                 B1,B2,B3
B1~3,B6              B1,B2,B3,B6
B1~3,B6,B5~7         B1,B2,B3,B6,B5,B7
请问各位怎么写?
我一时都想不起来(我是想用C#写)

回复列表 (共5个回复)

沙发

我也不知道能不能行。我想我们把输入的字符串转为一个字符数组,
看上面的结果,我们可以从中得到第2个和第4个,即两个数字。
那么我们即可使用循环,将前半部分输出。
至于后面就得考虑第三个了。就是说还要比较与后面那个数字的大小。
但是我又在想,如果出现这种问题怎么办。
B1~3,B6,A5~7
那么这时候怎么办?
不知道是不是我想多了。但是我不明白问题于这一点

板凳

无非字符串解析,里边三个关键,“~”,“,”和字母。用String的Split分解,类型转换,再迭代一下不就出来了。

3 楼

我当时也和2楼的想一样.所以到后来就不知道怎么写了.3楼的你能具体的把这个函数写一下吗?

4 楼

参加一下,明天再改
string   str1="B1~3";
            string str2="";
            string [] myArray = str1.Split(Convert.ToChar("~"));
            string str3="";
            str2=myArray[0].Substring(myArray[0].Length-1,1);
            for(int i=Convert.ToInt32(str2);i<=Convert.ToInt32(myArray[myArray.Length-1]);i++)
            {
                str3+=myArray[0].Substring(0,1)+i.ToString()+",";

            }
            label1.Text=str3;    

5 楼

private string test(string str1)
        {
            
            string str3="";
            string[] myArray=str1.Split(Convert.ToChar(","));
            
            for(int i=0;i<=myArray.Length-1;i++)
            {
                if(myArray[i].IndexOf("~")!=-1)
                {
                    string[] mySub=myArray[i].Split(Convert.ToChar("~"));
                    string str2="";
                    str2=mySub[0].Substring(mySub[0].Length-1,1);
                    for(int j=Convert.ToInt32(str2);j<=Convert.ToInt32(mySub[mySub.Length-1]);j++)
                    {
                        if(str3.IndexOf(mySub[0].Substring(0,1)+j.ToString())==-1)
                        {
                            str3+=mySub[0].Substring(0,1)+j.ToString()+",";
                        }

                    }
                }
                else
                {
                    str3+=myArray[i]+",";
                }
            }

        }

我来回复

您尚未登录,请登录后再回复。点此登录或注册