玩轉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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章