玩转String,StringBuffer,char

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

思路:分类成两个字符串,并排序,再合并成一个字符串,进行返回

算法实现:

public class Solution {	
public static void  main(String[] args) {
	Scanner scan=new Scanner(System.in);
	String str=scan.nextLine();
	//调用方法,并得到返回执行结果,
	String result=solution(str);
	System.out.println(result);
	
}
//分类成两个字符串,并排序,再合并成一个字符串,进行返回
public static String solution(String str) {
	String str2="";
	String str3="";
	int m=0,n=0;
	//str2:分类后的数字串,str3:分类后的字符串
	for(int i=0;i<str.length();i++) {
		if(str.charAt(i)>='0'&&str.charAt(i)<='9') {
			str2+=str.charAt(i);
		}
		if(str.charAt(i)>='a'&&str.charAt(i)<='z') {
			str3+=str.charAt(i);
		}
		
	}
	//对数字串进行排序
	String res2=sortNums(str2);
	//方法二:
	/*	char[] ic=str2.toCharArray();
	Arrays.sort(ic);
	StringBuffer sb3=new StringBuffer();
	for(char temp2:ic) {
		sb3.append(temp2);
	}
	String res3=sb3.toString();
	System.out.println("测试数字串排序:"+res3);*/
	
	//对字母串进行排序
	char[] ca=str3.toCharArray();
	Arrays.sort(ca);
	StringBuffer sb=new StringBuffer();
	for(char temp:ca) {
		sb.append(temp);
	}
	String res1=sb.toString();
	return res1+res2;
}
private static String sortNums(String str2) {
	int[] result=new int[str2.length()];
	for(int i=0;i<result.length;i++) {
		result[i]=Integer.parseInt(String.valueOf(str2.charAt(i)));
		
	}
	Arrays.sort(result);
	StringBuffer sb2=new StringBuffer();
	for(int temp:result) {
		sb2=sb2.append(temp);
	}
	return result.toString();
}
}

例题二: 给定一个英文字母组成的字符串,对于字符串中字母,如果前面已经出现过(字母不区分大小写),则需要将其删除,输出删除后的字符串

例如:aBcAbCdef     输出:aBcdef

思路:用arrayList存储首次出现的字符,注意大小写问题

算法实现:

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();
        String result = solution(str);
        System.out.println(result);
    }
 
    public static String solution(String str) {
        List<Character> list = new ArrayList<>();
        String result = "";
        String up = str.toUpperCase();
        String lower = str.toLowerCase();
        for (int i = 0; i < str.length(); i++) {
            // 大小写问题
            if (!(list.contains(up.charAt(i)) || list.contains(lower.charAt(i)))) {
                list.add(str.charAt(i));
            }
        }
        //链表转换成字符串,并进行拼接
        StringBuilder sb = new StringBuilder();
        for (int j = 0; j < list.size(); j++) {
            sb.append(list.get(j));
        }
        result = sb.toString();
        return result;
    }
 
}

相关连接:

https://blog.csdn.net/shelling_x/article/details/77645548?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

List转化成String的三种方式:

https://blog.csdn.n3et/u01131716/article/details/99627688

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值