【每日一题】Day5 字符集合

本题来源于牛客网中,链接如下:[编程题]字符集合

1.题目要求

题目展示:

输入一个字符串,求出该字符串包含的字符集合,按照字母输入的顺序输出。
数据范围:输入的字符串长度满足 1 \le n \le 100 \1≤n≤100 ,且只包含大小写字母,区分大小写。

本题有多组输入


输入描述:

每组数据输入一个字符串,字符串最大长度为100,且只包含字母,不可能为空串,区分大小写。

输出描述:

每组数据一行,按字符串原有的字符顺序,输出字符集合,即重复出现并靠后的字母不输出。

示例1:

输入
abcqweracb
输出
abcqwer


2.解题思路

【题目解析】:

本道题目是比较简单的,就是输入一段字符串,然后输出一段字符串,输出里面是按顺序的输入字符串,并且没有重复的字母。

【解题思路】:

那么我们要做这道题目,最简单的就是拿另一个字符串来装,没有的字符就放进去,有的就不放。更好的思想我们可以用道Hash的思想。下面我们可以用以下的两种代码去做。


3.参考代码

代码一:

import java.util.ArrayList;
import java.util.Scanner;

public class TestDemo {
    
    
	
	//用StringBuilder创建的数组存放返回字符串字符
    public static String func(String str) {
    
    
        StringBuilder sb = new StringBuilder();//创建
        for (int i = 0; i < str.length(); i++) {
    
    
            char ch = str.charAt(i);//挨个字符的拿出来
            if (!sb.toString().contains(ch + "")) {
    
    
                //对比sb中是否有这个字符
                //有就没事了
                sb.append(ch);//没就放进去
            }
        }
        return sb.toString();
    }


    public static void main(String[] args) {
    
    
        Scanner sc = new Scanner(System.in);
        while(sc.hasNextLine()){
    
    
            //多组输入
            String str = sc.nextLine();//输入字符串
            String str2 = func(str);
            System.out.println(str2);//输出字符串
        }
    }
}

第二种(Hash思想):

import java.util.Scanner;

public class test {
    
    
        public static void main(String[] args){
    
    
            Scanner scanner = new Scanner(System.in);
            while (scanner.hasNext()) {
    
    
                String str = scanner.nextLine();
                // 用来标记该字符是否出现过
                char[] flag = new char[256];
                StringBuilder sb = new StringBuilder();
                for(int i = 0; i < str.length(); ++i){
    
    
                    char ch = str.charAt(i);
                    // 如果标记是0,说明该字符是第一次出现
                    if(flag[ch] == 0){
    
    
                        flag[ch] = 1;
                        sb.append(str.charAt(i));
                    }
                }
                System.out.println(sb);
            }
            scanner.close();
        }
}

猜你喜欢

转载自blog.csdn.net/weixin_54225715/article/details/124561089