字符集合!!!
描述
輸入一個字符串,求出該字符串包含的字符集合,按照字母輸入的順序輸出。
數據范圍:輸入的字符串長度滿足 1 \le n \le 100 \1≤n≤100 ,且只包含大小寫字母,區分大小寫。
本題有多組輸入
輸入描述:
每組數據輸入一個字符串,字符串最大長度為100,且只包含字母,不可能為空串,區分大小寫。
輸出描述:
每組數據一行,按字符串原有的字符順序,輸出字符集合,即重復出現并靠后的字母不輸出。示例1 輸入: abcqweracb
輸出: abcqwer示例2
輸入:
aaa
輸出:
a
思路:
以:abcqweracb 分析
首先我們要從一個字符串中獲取到每個字符,那么需要遍歷字符串,拿到每個字符
for(int i=0;i<str.length();i++){char ch=str.charAt(i);
}
因為相同的字符只輸出一次,那么我們最好標記一下,比如當’a’第一次出現時,定義一個變量int x,讓x=1,當’a’第2次第三次…出現時,我們讓這個變量x=0。那么對定義的變量有什么要求?
其實,定義的該變量最好是boolean類型,因為boolean類型默認值false,也就是當’a’字符沒有出現過時,該變量為false,比較符合大多數人的邏輯,當’a’出現時,把定義的變量賦值為true;
在每次遍歷一個字符時判斷一下,如果boolean x=false,說明沒輸出過字符’a’,那么把字符’a’輸出,并把x變量賦值為true;那么下次判斷的是時候,打印語句就不會執行。
因為輸入的字符有許多種,不可能一種字符定義一個變量,此時我們可以定義一個boolean數組,當字符為’a’時,(根據ASCII碼值,字符’a’=97),對應該數組下標97,字符為’b’時,對應數組下標98,
綜上,遍歷字符串,拿到每個字符,然后根據這個字符的ASCII值,對應一個boolean數組的下標,通過下邊就可以唯一對應一個字符,當某個字符沒出現時默認為false,,當
該字符第一次出現時,因為默認值為false,進出判斷語句,然后讓該字符對應數組的賦值為true;下次該字符再次出現時,再也不會進入判斷語句。
import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);while (in.hasNextLine()) { // 注意 while 處理多個 caseString str=in.nextLine();StringBuilder stringBuilder=new StringBuilder();boolean[] flgs=new boolean[127];for(int i=0;i<str.length();i++){char ch=str.charAt(i);if(flgs[ch]==false){ stringBuilder.append(ch);//如果某字符第一次出現,,就把//該字符連接到 stringBuilder,便于后續直接輸出flgs[ch]=true;}}System.out.println(stringBuilder);}}
}