欢迎来到天天文库
浏览记录
ID:57254263
大小:39.50 KB
页数:4页
时间:2020-08-07
《C#对字符串的排序重组问题.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、对字符串排序重组已知一个字符串,由数字、大写字母、小写字母和其他字符组成。将字符串按数字的排在最前面,大写字母排在中间,小写字母排在后面,其他字符排在最后面,不要打乱字符的前后顺序。比如字符串"sfD8MgA2中S国a人G7"排序结果:"8257DMASGsfga中国人"。思路:以字符串"sfD8MgA2中S国a人G7"为例第一步:如果索引0的字符不是数字,则找出第一个数字,将它放在索引0的位置,其他字符索引向后移动一位找出第二个数字,将它放在索引1的位置,其他字符索引向后移动一位……以此类推。排序结果是8257sfDM
2、gA中s国a人G第二步:从不是数字的第一个字符(索引upperLetterIndex)开始排序,找出第一个大写字母,放在upperLetterIndex索引位置,将字符索引向后移动一位。第三步:从upperLetterIndex向后查找找出第一个不是大写字母的开始小写字母排序。操作同上。小写字母排序结束,剩下的就是其他字符了。程序源代码://////已知一个字符串,由数字、大写字母、小写字母和其他字符组成。///将字符串按数字的排在最前面,大写字母排在中间,///小写字母排在后面,其他字符排在最后面,不
3、要打乱字符的前后顺序。///如字符串"sfD8MgA2中S国a人G7"排序结果:"8257DMASGsfga中国人"///staticvoidSortArr(){strings="sfD8MgA2中S国a人G7";//数字的最前面,大写字母中间,小写字母在后面,其他最后。不要改变次序//返回:DMASGsfga中国人char[]c=s.ToCharArray();for(inti=0;i4、字放到当前索引位置。if(char.IsDigit(c[i])==false){for(intk=i+1;ki;j--){c[j]=c[j-1];}c[i]=temp;break;}}}}Console.WriteLine("第一次数字类型放在最前面--排序后结果:{0}",newstring(5、c));intupperLetterIndex=0;//第一个不是数字的索引作为大写字母的索引for(inti=0;i='A'&&c[i]<='Z')==false){for(intk=i+1;k6、>='A'&&c[k]<='Z'){chartemp=c[k];for(intj=k;j>i;j--){c[j]=c[j-1];}c[i]=temp;break;}}}}Console.WriteLine("第二次大写字母放在中间的--排序后结果:{0}",newstring(c));//从upperLetterIndex开始查找不是大写字母的intlowerLetterIndex=upperLetterIndex;for(inti=upperLetterIndex;i='7、A'&&c[i]<='Z')==false){lowerLetterIndex=i;break;}}for(inti=lowerLetterIndex;i='a'&&c[i]<='z')==false)//如果当前不是小写字母{for(intk=i+1;k='a'&&c[k]<='z')//从下一个开始找小写字母找到中断{chartemp=c[k];for(intj=k;j>i;j--){c[j]=c[j-1];8、}c[i]=temp;break;}}}}Console.WriteLine("第三次小写字母放在再后面--排序后结果:{0}",newstring(c));stringafterSortStr=newstring(c);Console.WriteLine("原来是:{0}排序后:{1}",s,afterSort
4、字放到当前索引位置。if(char.IsDigit(c[i])==false){for(intk=i+1;ki;j--){c[j]=c[j-1];}c[i]=temp;break;}}}}Console.WriteLine("第一次数字类型放在最前面--排序后结果:{0}",newstring(
5、c));intupperLetterIndex=0;//第一个不是数字的索引作为大写字母的索引for(inti=0;i='A'&&c[i]<='Z')==false){for(intk=i+1;k6、>='A'&&c[k]<='Z'){chartemp=c[k];for(intj=k;j>i;j--){c[j]=c[j-1];}c[i]=temp;break;}}}}Console.WriteLine("第二次大写字母放在中间的--排序后结果:{0}",newstring(c));//从upperLetterIndex开始查找不是大写字母的intlowerLetterIndex=upperLetterIndex;for(inti=upperLetterIndex;i='7、A'&&c[i]<='Z')==false){lowerLetterIndex=i;break;}}for(inti=lowerLetterIndex;i='a'&&c[i]<='z')==false)//如果当前不是小写字母{for(intk=i+1;k='a'&&c[k]<='z')//从下一个开始找小写字母找到中断{chartemp=c[k];for(intj=k;j>i;j--){c[j]=c[j-1];8、}c[i]=temp;break;}}}}Console.WriteLine("第三次小写字母放在再后面--排序后结果:{0}",newstring(c));stringafterSortStr=newstring(c);Console.WriteLine("原来是:{0}排序后:{1}",s,afterSort
6、>='A'&&c[k]<='Z'){chartemp=c[k];for(intj=k;j>i;j--){c[j]=c[j-1];}c[i]=temp;break;}}}}Console.WriteLine("第二次大写字母放在中间的--排序后结果:{0}",newstring(c));//从upperLetterIndex开始查找不是大写字母的intlowerLetterIndex=upperLetterIndex;for(inti=upperLetterIndex;i='
7、A'&&c[i]<='Z')==false){lowerLetterIndex=i;break;}}for(inti=lowerLetterIndex;i='a'&&c[i]<='z')==false)//如果当前不是小写字母{for(intk=i+1;k='a'&&c[k]<='z')//从下一个开始找小写字母找到中断{chartemp=c[k];for(intj=k;j>i;j--){c[j]=c[j-1];
8、}c[i]=temp;break;}}}}Console.WriteLine("第三次小写字母放在再后面--排序后结果:{0}",newstring(c));stringafterSortStr=newstring(c);Console.WriteLine("原来是:{0}排序后:{1}",s,afterSort
此文档下载收益归作者所有