首页 > 试题广场 >

字符集合

[编程题]字符集合
  • 热度指数:77031 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
输入一个字符串,求出该字符串包含的字符集合,按照字母输入的顺序输出。

数据范围:输入的字符串长度满足  ,且只包含大小写字母,区分大小写。

本题有多组输入

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


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

输入

abcqweracb

输出

abcqwer
示例2

输入

aaa

输出

a
哈希标记
import java.util.Scanner;
import java.util.Arrays;
import java.lang.Math;

public class Main {

    public static final int MOD = 26;
    public static final int[] volume = new int[MOD << 1];

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        while (in.hasNext()) {
            String str = in.nextLine();
            Arrays.fill(volume, -1);

            for (int i = 0, len = str.length(); i < len; i++) {
                char c = str.charAt(i);
                int idx = c >= 'A' && c <= 'Z' ? MOD + c - 'A' : c - 'a';

                if (volume[idx] == -1) {
                    volume[idx] = i;
                    System.out.printf("%c", c);
                }
            }

            System.out.println();
        }

        in.close();
    }

}


编辑于 2024-04-23 00:07:43 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextLine()){
            String str = in.nextLine();
            String ret = Func(str);
            System.out.println(ret);
        }
    }
    public static String Func(String str) {
        boolean[] arr = new boolean[58];
        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 0; i < str.length(); i++) {
            char ch = str.charAt(i);
            if (arr[ch - 'A'] == false){
                stringBuilder.append(ch);
                arr[ch - 'A'] = true;
            }
        }
        return stringBuilder.toString();
    }
}
编辑于 2024-02-02 14:44:09 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {

    public static String func(String str){
        boolean[] flags = new boolean[127];
        StringBuilder stringBuilder = new StringBuilder();
        for(int i =  0; i < str.length(); i++){
            char ch = str.charAt(i);
            if(!flags[ch]){
                stringBuilder.append(ch);
                flags[ch] = true;
            }
        }
        return stringBuilder.toString();
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextLine()) { // 注意 while 处理多个 case
            String str = in.nextLine();
            String ret = func(str);
            System.out.println(ret);
        }
    }
}
编辑于 2024-01-28 15:43:50 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static String func(String str){
      boolean[] s = new  boolean[128];
      StringBuilder stringBuilder = new StringBuilder();
        for(int i=0 ; i<str.length() ; i++){
            char ch = str.charAt(i);
            if(s[ch] == false){
                stringBuilder.append(ch);
                s[ch] = true;
            }
        }
        return stringBuilder.toString();
    }
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in. hasNextLine()) { // 注意 while 处理多个 case
            String str = in.nextLine();
            String ret = func(str);
            System.out.println(ret);
        }
    }
}
发表于 2023-11-22 16:10:20 回复(0)
import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        
        while (in.hasNextLine()) { // 注意 while 处理多个 case
            Set<Character>set=new HashSet<>();
            StringBuffer ans=new StringBuffer();
            String a = in.nextLine();
            int nu=0;
            for(int i=0;i<a.length();i++){
                char c=a.charAt(i);
                if(set.contains(c))
                    continue;
                else{
                    ans.append(c);
                    set.add(c);
                }  
            }
            System.out.println(ans.toString());
        }
    }
}
发表于 2023-05-14 21:42:17 回复(0)
import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNext()) { // 注意 while 处理多个 case
            String a = in.nextLine();

            //LinkedHashMap map  = new LinkedHashMap();
            String res = "";
            for (int i = 0; i < a.length(); i++) {
                char ch = a.charAt(i);
                if(a.indexOf(ch) == i){
                    res += String.valueOf(ch);
                }
            }
            System.out.println(res);
        }
    }
}
发表于 2023-02-21 16:53:57 回复(0)
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextLine()) {
            String str = scanner.nextLine();
            String str1 = func(str);
            System.out.println(str1);
        }
    }
    public static String func(String  arr) {
        boolean[] boo = new boolean[200];
        StringBuilder sb = new StringBuilder();
        int i = 0;
        while (i < arr.length()) {
            char a = arr.charAt(i);
            if (boo[a] == false) {
                boo[a] = true;
                sb.append(a);
            }
            i++;
        }
        return sb.toString();
    }
}

发表于 2022-12-12 21:17:51 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner read = new Scanner(System.in);
        while(read.hasNext()){
        int[] arr = new int[123]; 
        String str = read.nextLine();
        for(int i = 0;i < str.length();i++){
            arr[str.charAt(i)] += 1;
        }
        int j = 0;
        for(j = 0 ;j < str.length();j++){
            if(arr[str.charAt(j)] != 0){
                System.out.print(str.charAt(j));
                arr[str.charAt(j)]=0;}
        }
        System.out.println();
    }
    }
}

发表于 2022-12-07 12:44:22 回复(0)
import java.util.*;
public class Main {
  public static String fun(String s) {
        StringBuilder sb=new StringBuilder();
        for(int i=0;i<s.length();i++){
            char ch=s.charAt(i);
            if(!sb.toString().contains(ch+"")){
                    sb.append(ch);
            }
        }
        return sb.toString();
    }

    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        while(scanner.hasNextLine()){
        String str1=scanner.nextLine();
        String ret=fun(str1);
        System.out.println(ret);
            
        }
        
    }  
}
发表于 2022-09-12 21:57:04 回复(0)
import java.util.*;
public class Main{
    public static String func(String str){
        int[]array=new int[256];
        StringBuilder sb=new StringBuilder();
        for(int i=0;i<str.length();i++){
            char ch=str.charAt(i);
            if(array[ch]==0){
                sb.append(ch);
                array[str.charAt(i)]=1;
            }
        }
        return sb.toString();
    }
    public static void main(String[] args){
        Scanner scan=new Scanner(System.in);
        while(scan.hasNextLine()){
            String str=scan.nextLine();
            String ret=func(str);
            System.out.println(ret);
        }
    }
}
思路(哈希值法)
1.写一个多组输入的代码
2.利用哈希值为零的特性,遍历整个数组,如果哈希值为0,则把该元素加到sb里面(利用append)(String不能修改,所以用StringBuilder或者StringBuffer创建一个新的sb对象),把这个第一次出现的哈希值改为1
3.这样所有出现过的元素都在sb里面(如果出现多次,因为已经把哈希值改为1,就不会加入到sb里面)
4.因为sb的类型是StringBuilder,所以需要利用同String方法重写

发表于 2022-04-21 20:44:49 回复(0)
import java.util.*;
public class Main{
    public static StringBuffer func(String str) {
        int[] array = new int[127];
        StringBuffer str1=new StringBuffer();
        for (int i = 0; i < str.length(); i++) {
            if(array[str.charAt(i)]==0){
                str1.append(str.charAt(i));
            }
            array[str.charAt(i)]++;
        }
        return str1;
    }

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while(scan.hasNextLine()) {
            String str = scan.nextLine();
            StringBuffer ret = func(str);
            System.out.println(ret);
        }
    }
}

发表于 2022-04-20 23:09:54 回复(0)
麻烦大家看看这样为什么不通过,自测都可以但是就是通过不了
import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        HashSet<Character> set = new HashSet<>();
        ArrayList<Character> array = new ArrayList<>();
        for(int i = 0; i < s.length();i++){
            if(set.add(s.charAt(i))){
                array.add(s.charAt(i));
            }
        }
        for(int i = 0; i <array.size();i++){
            System.out.print(array.get(i));
        }
    }
}

发表于 2022-03-23 17:28:22 回复(2)
import java.util.*;
public class Main{
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextLine()) {
            String str = in.nextLine();
            //System.out.println(func1(str));
            System.out.println(func2(str));
        }
    }

    public static String func2(String str){
        StringBuilder sb = new StringBuilder();
        int[] arr = new int[58];
        for (int i = 0; i < str.length(); i++) {
            char ch = str.charAt(i);
            if (arr[ch-65] == 0){
                sb.append(ch);
                arr[ch-65] = 1;
            }
        }
        return sb.toString();
    }
    
    public static String func1(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.append(ch);
            }
        }
        return sb.toString();
    }
}
发表于 2022-02-06 11:39:00 回复(0)
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while(scan.hasNext()) {
            String str = scan.nextLine();
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < str.length(); i++) {
                char ch = str.charAt(i);
                if (!sb.toString().contains(ch + "")) {
                    sb.append(ch);
                }
            }
            System.out.println(sb.toString());
        }
    }
}

发表于 2021-11-04 10:26:55 回复(0)
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        while (input.hasNext()) {
            String str = input.nextLine();
            if (null == str && str.length() > 100)
                return;
            //String str = "abcfacg";
            String str2 = String.valueOf(str.charAt(0));
            for (int i = 0; i < str.length(); i++) {
                if (!str2.contains(String.valueOf(str.charAt(i))))
                    str2 += str.charAt(i);
            }
            System.out.println(str2);
        }
        input.close();  }        

}

编辑于 2021-10-30 10:03:03 回复(0)
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        while(scanner.hasNext()){
            String str = scanner.next();
            StringBuilder sb = new StringBuilder();
            for(int i=0;i<str.length();i++){
                char ch = str.charAt(i);
                if(!sb.toString().contains(ch+"")){
                    sb.append(ch);
                }
            }
            System.out.println(sb);
        }
        
    }
}
发表于 2021-06-06 10:49:41 回复(0)

import java.util.*;

public class Main{
 public static void main(String[] args){
 Scanner scan = new Scanner(System.in);
 while(scan.hasNext()){
 String str = scan.nextLine();
 StringBuilder sb = new StringBuilder();
 
 for(int i = 0;i <str.length();i++){
     char ch = str.charAt(i);
     if(!sb.toString().contains(ch+"")){
           sb.append(ch);
         }
       }
     System.out.println(sb);
    }
  }
}

发表于 2021-05-10 23:24:23 回复(0)
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNextLine()){
            String str = sc.nextLine();
            Set<Character> keys = new HashSet<Character>();
            for(int i=0; i<str.length();i++){
                char v = str.charAt(i);
                if(!keys.contains(v)){
                    System.out.print(v);
                    keys.add(v);
                }
            }
            System.out.println("");
        }
    }
}

发表于 2020-02-11 13:06:15 回复(0)
import java.util.LinkedHashSet;
import java.util.Scanner;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main 
{
    public static void main(String[] args) 
    {
         Scanner sc=new Scanner(System.in);
            while(sc.hasNext())
            {
                String str=sc.next();
                String regex="^[A-Za-z]+$"; 
                Matcher matcher=Pattern.compile(regex).matcher(str);
                boolean flag=matcher.matches();
                if(!flag||str.length()>100)
                {
                    return;
                }
                Set<Character> set=new LinkedHashSet<>();
                set.clear();
                for(int i=0;i<str.length();i++)
                {
                    char s=str.charAt(i);
                    set.add(s);
                }
                StringBuilder sb=new StringBuilder();
                for(char s:set)
                {
                    sb.append(""+s);
                }
                System.out.println(sb.toString());
            }
    }


}
发表于 2020-01-28 13:37:24 回复(0)
import java.util.*;
public class Main {
     public static void main(String[] args) {
           Scanner sc = new Scanner(System.in);
           while (sc.hasNext()) {
           String next = sc.nextLine();
           LinkedHashSet<Character> set = new LinkedHashSet<Character>();
           char[] chars = next.toCharArray();
           for (char aChar : chars) {
               set.add(aChar);
            }
           for (char ch : set) {
                System.out.print(ch);
            }
                System.out.println();
        }
     }
}
编辑于 2018-09-22 10:42:48 回复(0)