探讨两道.Net关于字符串的上机题
来源:互联网 发布:武汉java培训机构名单 编辑:程序博客网 时间:2024/05/02 02:24
前不久,我公司一同事想跳槽,出去面试,回来很郁闷。原来公司直接让上机调试,给了两道.Net题,一道Sql。Sql那个不难,但是那两道编程题好像没出结果,大概也因为给的是日文操作系统,而且用的是.Net2005,我们都习惯了2003,没接触过可能把时间给耽误了。我了解了正两道题,其实很简单的,不过在那样的时间内,那样的环境下,我未必也能做好,嘿嘿。正好我这段时间也在看正则表达式,这真是个好东东,于是每道我都附了正则的解法。
第一题,统计一个字符串内大写字母,空格以及数字的个数;
解法1:
//利用Substring方法逐个截取
int j=0,k=0,l=0;
char A='A',Z='Z',kong=' ',number0='0',number9='9';
while(Testtext.Length>0)
{
char test=Convert.ToChar(Testtext.Substring(0,1));
if(test>=A&&test<=Z)
{
j++;
}
if(test==kong)
{
k++;
}
if(test>=number0&&test<=number9)
{
l++;
}
if(Testtext.Length>1)
{
Testtext=Testtext.Substring(1,Testtext.Length-1);
}
else
{
break;
}
}
解法2:
//利用字符串也是数组的性质+ASCII码判断
int j=0,k=0,l=0;
char A='A',Z='Z',kong=' ',number0='0',number9='9';
for(int i=0;i<Testtext.Length;i++)
{
char test=Convert.ToChar(Testtext[i].ToString());
if(test>=A&&test<=Z)
{
j++;
}
if(test==kong)
{
k++;
}
if(test>=number0&&test<=number9)
{
l++;
}
}
解法3:
//利用正则表达式判断
int j=0,k=0,l=0;
string Letter="[A-Z]";
string Space="[ ]";
string Number="[0-9]";
MatchCollection MatchCollectionL=Regex.Matches(Testtext,Letter);
j=MatchCollectionL.Count;
MatchCollection MatchCollectionS=Regex.Matches(Testtext,Space);
k=MatchCollectionS.Count;
MatchCollection MatchCollectionN=Regex.Matches(Testtext,Number);
l=MatchCollectionN.Count;
this.textBox3.Text="大写字母:"+j.ToString()+"空格:"+k.ToString()+"数字:"+l.ToString();
注意用正则解,需要添加命名空间using System.Text.RegularExpressions;然后就可以用了哈。
第二道,统计一个英语句子中最大单词的长度;
解法1:
//Substring法
Testtext=Testtext.Trim();
int i=0,j=0;
while(Testtext.Length>0)
{
if(Testtext.IndexOf(" ")>0)
{
i=Testtext.Substring(0,Testtext.IndexOf(" ")).Length;
if(i>j)
{
j=i;
}
Testtext=Testtext.Substring(Testtext.IndexOf(" "),Testtext.Length-Testtext.IndexOf(" "));
Testtext=Testtext.Trim();
}
else
{
i=Testtext.Length;
if(i>j)
{
j=i;
}
break;
}
}
解法2:
//正则表达式
int i=0,j=0;
Regextext=@"/b/w+/b";
MatchCollection myMatchCollection=Regex.Matches(Testtext,Regextext);
for(int l=0;i<myMatchCollection.Count;l++)
{
i=myMatchCollection[0].Length;
if(i>j)
{
j=i;
}
}
this.textBox3.Text="最大单词长度为:"+j.ToString();
目前本人就找了这几种解法,如果谁还有更好的解法,还请赐教,一起学习嘛呵呵。可以看出来,在第一道题中采取Substring的解法是最麻烦的,不过对第二道来说,如果不会正则那就只能用Substring了,两道题如果用正则表达式解的话会明显的代码清晰,可见正则表达式操纵字符串的强大。
- 探讨两道.Net关于字符串的上机题
- 再来两道华为字符串上机题目
- .net上机第一题 - 简单的字符串运算
- 关于C语言字符串初始化问题的探讨
- 关于有序二维矩阵查找和字符串替换的两道算法题
- 关于.Net中属性的使用探讨(一)
- 关于.Net中属性的使用探讨(二)
- 关于Asp.net中static与ViewState使用的探讨
- 关于Asp.net中static与ViewState使用的探讨
- 有关字符串的两道编程题
- .NET多线程的探讨
- 上机题-字符串反转
- 关于session的探讨
- 关于敏捷的探讨
- 关于敏捷的探讨
- 关于工作流的探讨
- 关于RAII的探讨
- 关于引用的探讨
- WiMAX的主要优势及发展现状(news_20060801)
- 玩转brew菜单
- Sqlserver MD5 加密
- newxy标签实现访问控制
- 关于对栈溢出的分析
- 探讨两道.Net关于字符串的上机题
- Patterns in SOME –Chain Of Responsibility
- 工作流(WfMC ) 术语解释一------------基本概念
- 单向收费的背后:飞信飞入寻常百姓家
- 今年要把这个blog写下去。
- [精]采用dwr+ajax和struts开发文件上传进度条
- DataGrid删除记录弹出对话框的解决办法
- Patterns in SOME –Template Method
- Oracle数据直接导出到文本文件的方法()