✨博客主页: XIN-XIANG荣
✨系列专栏:【LeetCode/牛客刷题】
✨一句短话: 难在坚持,贵在坚持,成在坚持!
题目描述:
输入一个字符串,求出该字符串包含的字符集合,按照字母输入的顺序输出。
数据范围:输入的字符串长度满足 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());
}
}
*/
}