主题:一个程序员面试题
cck2004
[专家分:10] 发布于 2007-12-01 12:03:00
程序员面试时有一个这样的题:
编写一个函数.能实现以下功能:
输入 输出
B1~3 B1,B2,B3
B1~3,B6 B1,B2,B3,B6
B1~3,B6,B5~7 B1,B2,B3,B6,B5,B7
请问各位怎么写?
我一时都想不起来(我是想用C#写)
最后更新于:2007-12-01 12:06:00
回复列表 (共5个回复)
沙发
xiaohaokof [专家分:1760] 发布于 2007-12-01 12:32:00
我也不知道能不能行。我想我们把输入的字符串转为一个字符数组,
看上面的结果,我们可以从中得到第2个和第4个,即两个数字。
那么我们即可使用循环,将前半部分输出。
至于后面就得考虑第三个了。就是说还要比较与后面那个数字的大小。
但是我又在想,如果出现这种问题怎么办。
B1~3,B6,A5~7
那么这时候怎么办?
不知道是不是我想多了。但是我不明白问题于这一点
板凳
hanyongren [专家分:150] 发布于 2007-12-01 17:55:00
无非字符串解析,里边三个关键,“~”,“,”和字母。用String的Split分解,类型转换,再迭代一下不就出来了。
3 楼
cck2004 [专家分:10] 发布于 2007-12-03 10:52:00
我当时也和2楼的想一样.所以到后来就不知道怎么写了.3楼的你能具体的把这个函数写一下吗?
4 楼
a97191 [专家分:4040] 发布于 2007-12-03 23:56:00
参加一下,明天再改
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 楼
a97191 [专家分:4040] 发布于 2007-12-05 23:35:00
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]+",";
}
}
}
我来回复