字符串分类-java

      晚上刷复试机试题,刚刷到一个题目,特此记录。觉得题目还行,就怕到时上机会没有时间。具体题目如下。

      输入一个字符串,要求输出能把所有的小写字符放前面,大写字符放中间,数字放后面,并且中间用空格隔开,如果同种类字符间有不同种类的字符,输出后也要用字符隔开。
      例:输入 12abc3KF12
      输出 abc KF 12 3 12
      输入 rwr21r3hello666world
      输出 rwr r hello world 21 3 666

     记得之前就做出来了,采用了三次循环,分别遍历大写字符,小写字符和数字,再将它们加入不同的数组内。由于之前有点久远,所以就记不起具体的代码,又重新想了一种方法。具体代码如下

public class tset {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		findDifferent("12abc3KF12");
		
	}
	public static void findDifferent(String str){
		ArrayList<String> array=new ArrayList<>();//用来存储已经分割但是并未分类的字符串
		ArrayList<String> xiaoxie=new ArrayList<>();//小写字符数组
		ArrayList<String> daxie=new ArrayList<>();//大写字符数组
		ArrayList<String> shuzi=new ArrayList<>();//数字字符数组
		//先取第一个字符
		String trmp=str.charAt(0)+"";
		
		for(int i=1;i<str.length();i++){
			//如果当前遍历字符与trmp字符串的最后一个字符为同种类型,拼接
			if(isType(trmp.charAt(trmp.length()-1), str.charAt(i))){
				trmp+=str.charAt(i);	
			}else{
				//如果不相同则,把之前的字符串加入数组,trmp为当前字符
			 array.add(trmp);
			 trmp=str.charAt(i)+"";
			}
		}
		//加入最后的字符串
		array.add(trmp);
		//再将混在一起的字符串进行分类
		for(int i=0;i<array.size();i++){
			char c=array.get(i).charAt(0);
			if(c>='A'&&c<='Z')
				daxie.add(array.get(i));
			else if(c>='a'&&c<='z')
				xiaoxie.add(array.get(i));
			else
				shuzi.add(array.get(i));
		}
		show(xiaoxie);
		show(daxie);
		show(shuzi);
	}
	
	//判断两个字符是不是同种类型的
	public static boolean isType(char a, char b){
		if((a>='A'&&a<='Z')&&(b>='A'&&b<='Z'))
			return true;
		else if((a>='a'&&a<='z')&&(b>='a'&&b<='z'))
			return true;
		else if((a>='0'&&a<='9')&&(b>='0'&&b<='9'))
			return true;
		else
			return false;
	}
	//输出数组
	private static void show(ArrayList<String> array){
		for(int i=0;i<array.size();i++)
			System.out.print(array.get(i)+"    ");
	}

}


         

猜你喜欢

转载自blog.csdn.net/Huang_cainiao/article/details/79618758