题目描述:
输入一个字符串,求出该字符串包含的字符集合,按照字母输入的顺序输出。
数据范:输入的字符串长度满足 1≤n≤100 ,且只包含大小写字母,区分大小写。
本题有多组输入
输入描述
每组数据输入一个字符串,字符串最大长度为100,且只包含字母,不可能为空串,区分大小写。
输出描述
每组数据一行,按字符串原有的字符顺序,输出字符集合,即重复出现并靠后的字母不输出。
示例1
输入:
abcqweracb
输出:
abcqwer
示例2
输入
aaa
输出:
a
链接:https://www.nowcoder.com/questionTerminal/784efd40ed8e465a84821c8f3970b7b5
来源:牛客网
解题思路:
思路1:
新建一个StringBuilder类型的字符串strb,初始值设置为空字符串,遍历输入的字符串判断每个字符在strb中是否存在,若不存在,将字符追加到strb中,最后输出字符串strb即可。
判断方法可以用两个循环来实现,第一个循环遍历输入的字符串,第二个循环遍历strb,判断字符和strb是否有相同的字符,没有则将字符追加到strb.
思路2:
和思路1的整体思想相同,只是实现判断的方式思路1区别,strb可以先转化一个String类型的字符串tmp,然后利用String中的contains去判断字符是否包含在tmp中,没有则将字符追加到strb中。
思路3:
输入的字符串的每个字符属于26个字母(区分大小写),每一个出现字符都对应一个ASCII值,所以可以利用一个boolean类型的数组来记录字符串中字符的出现状态,判断字符对应数组位置的值,如果为false,说明这个字符是第一次出现,则将其追加到strb中,并将数组对应位置的值设置为true;判断数组中的值为true表明这个字符出现过一次了就不再继续往strb中追加了,遍历字符出将所有字符串判断完即可;
大小写26个字母中,ASCII码最大的是小写字母z(122);所以数组的大小设置为123即可
代码实现:
import java.util.Scanner; public class Main { //方法一 public static void main(String args[]) { Scanner sc = new Scanner(System.in); while(sc.hasNextLine()) { String str = sc.nextLine(); StringBuilder strb = new StringBuilder(""); for(int i = 0; i < str.length(); i++) { int flag = 1; for(int j = 0; j < strb.length(); j++) { if(str.charAt(i) == strb.charAt(j)) { flag = 0; } } if(flag == 1){ strb.append(str.charAt(i)+""); } } System.out.println(strb.toString()); } } //方法二 /*public static void main(String args[]) { Scanner sc = new Scanner(System.in); while(sc.hasNextLine()) { String str = sc.nextLine(); StringBuilder strb = new StringBuilder(""); for(int i = 0; i < str.length(); i++) { String tmp = strb.toString(); if(!tmp.contains(str.charAt(i)+"")) { strb.append(str.charAt(i)+""); } } System.out.println(strb.toString()); } }*/ //方法三 /*public static void main(String args[]) { Scanner sc = new Scanner(System.in); while(sc.hasNextLine()) { String str = sc.nextLine(); boolean[] flg = new boolean[123]; StringBuilder strb = new StringBuilder(""); for(int i = 0; i < str.length(); i++) { char ch = str.charAt(i); if(flg[ch] == false) { strb.append(ch); flg[str.charAt(i)] = true; } } System.out.println(strb.toString()); } } */ }