输入:每组数据输入一个字符串,字符串最大长度为100,且只包含字母,不可能为空串,区分大小写。 输出:每组数据一行,按字符串原有的字符顺序,输出字符集合,即重复出现并靠后的字母不输出

问题描述:
输入:每组数据输入一个字符串,字符串最大长度为100,且只包含字母,不可能为空串,区分大小写。
输出:每组数据一行,按字符串原有的字符顺序,输出字符集合,即重复出现并靠后的字母不输出
法一:

public class zy {
    
    
    //输入:每组数据输入一个字符串,字符串最大长度为100,且只包含字母,不可能为空串,区分大小写。
    //输出:每组数据一行,按字符串原有的字符顺序,输出字符集合,即重复出现并靠后的字母不输出

    //法1:用库方法contains,对每个字符判断一下
    public static void fun(String str) {
    
    
        StringBuilder stringBuilder=new StringBuilder();
        for(int i=0;i<str.length();i++){
    
    
            char ch=str.charAt(i);
            if(!stringBuilder.toString().contains(ch+"")){
    
    
                //stringBuilder没有contains,但是toString有
                //ch是一个字符,contains要的参数是字符串,加一个“”即可变为字符串
                stringBuilder.append(ch);//不包含就放进去
            }
        }
        System.out.println(stringBuilder);
        //或者你这里设置返回值类型String,return stringBuilder.toString()
    }
    public static void main(String[] args) {
    
    
        Scanner scanner=new Scanner(System.in);
        while(scanner.hasNextLine()){
    
    //多组用例输入
            String str=scanner.nextLine();
            fun(str);
        }
    }
}

运行结果如下:
在这里插入图片描述
法二:

public class zy {
    
    
    //法二:利用哈希的思想
    //由题知只输入大小写字母,a~z对应ASCII码为:97~122,A~Z对应ASCII码为65~90
    //创建一个整形数组int[],该数组用于存放每个字母存放的次数,数组对应下标为该字母的ASCII码
    //比如abcqweracb中的a
    //a对应的ASCII码为97,我们在数组下标97的位置放一个零,
    // 当第一次遇见有字符a的时候,0变成1,后续再有a,发现数组里存放的数是1,便不再添加
    public static String fun2(String str) {
    
    
        StringBuilder stringBuilder=new StringBuilder();
        int[]arr=new int[127];
        //ASCII码所有字符,你要是觉得大,你限制到122也可以,反正题目只输入大小写字母
        for(int i=0;i<str.length();i++){
    
    
            char ch=str.charAt(i);
            if(arr[ch]==0){
    
    
                stringBuilder.append(ch);
                arr[ch]=1;
            }
        }
        return stringBuilder.toString();
    }

    public static void main(String[] args) {
    
    
        Scanner scanner=new Scanner(System.in);
        while(scanner.hasNextLine()){
    
    //多组用例输入
            String str=scanner.nextLine();
            String str2=fun2(str);
            System.out.println(str2);
        }
    }

}

运行结果如下:
在这里插入图片描述

Guess you like

Origin blog.csdn.net/m0_57180439/article/details/122330749