输入一串字符,要求数字从小到大,字母从a到z排序,输出字母和数字的排序结果。

本文介绍了一种用于对混合字符串(包含数字和小写字母)进行排序的算法。该算法首先将字符串中的数字和字母分离,然后分别对数字和字母进行排序,最后将排序后的数字和字母重新组合。文章提供了完整的Java实现代码。

题目:输入 一串字符,包含数字[0-9]和小写字母[a-z],要求按数字从小到大,字母从a-z排序,并且所有数字排在字母的后面。

思路:首先将字母和数字进行分离,分别放入两个String字符串中,分别完成操作后输出。
        难点 1.对于String中字母和数字都要单个进行提取,放入到数组中,主要涉及char[]数组的使用,因为char对应单个字符。
备注:网上笔试题,代码是参考网上别人的,具体出处找不到了,请谅解。摘抄记录下来方便日后学习。如果有问题尽请批评指正,希望可以和大神一起交流。

java代码如下:

import java.util.Arrays;
import java.util.Scanner;

public class HelloB{
	
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);  
	    String nums = null;   
	    String string=null;
	    nums = sc.nextLine(); 
	     
	    //调用方法,并得到返回执行结果,
	    string =stringFrontNum(nums);
	    System.out.println(string);
	}
        //将数字和字母分离的方法
	private static String stringFrontNum(String nums) {
		// TODO Auto-generated method stub
		
		 String charString="";
	     String numString="";
	  
	     for(int i=0;i<nums.length();i++){
	    	 //得到数字字符串
	    	 if (nums.charAt(i)>='0'  && nums.charAt(i)<='9') 
	    		 numString+=nums.charAt(i);
	    		
	    	//得到字母字符串
	    	if(nums.charAt(i)>='a' && nums.charAt(i)<='z')
	                 charString+=nums.charAt(i);	
	     }
	     //调用对字母排序的方法
	     charString=  sortString(charString);
	   //调用对数字排序的方法
	     numString=   sortNums(numString); 
  
		return charString+numString;
	}
	
	
	/*-------》》对字符串进行操作
     * 1.将字符串转成数组
     * 2.对数组进行排序
     * 3.将排好序的数组转成字符串
     * */
		public static String sortString(String charString) {
			// TODO Auto-generated method stub
			 char[] chs=charString.toCharArray();
			 Arrays.sort(chs);
			 charString=new String(chs);
			 return charString;
	
		}	
	
	
	 /*-------》》对数字字符串进行操作
     * 1.将数字字符串转成char,再转成String,然后Integer
     * 2.对数组进行排序
     * 3.将排好序的数组转成字符串
     * */
	 public static String  sortNums(String numString) {
		
		// TODO Auto-generated method stub
		 int[] is=new int[numString.length()];
	     for (int i = 0; i < is.length; i++) {
			is[i]=Integer.parseInt(String.valueOf(numString.charAt(i)));
			/*字符串中的数据一定要是数字,否则会出现异常
                numString.charAt(i);得到字符串i位置的值,
                String.valueOf(); 转换char类型为字符串
                Integer.parseInt();由String转换成Integer
			 * 
			 */
		}
	     
	     Arrays.sort(is);
	     
	     StringBuffer stringBuffer=new StringBuffer();
	     for (int i = 0; i < is.length; i++) {
			stringBuffer=stringBuffer.append(is[i]);
		}
	     numString=stringBuffer.toString();
		 
		 return numString;
	}
	
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值