首页 > 试题广场 >

提取不重复的整数

[编程题]提取不重复的整数
  • 热度指数:553827 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
\hspace{15pt}对于给定的正整数 n ,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。

输入描述:
\hspace{15pt}在一行上输入一个正整数 n \left(1 \leqq n \leqq 10^8\right) 代表给定的整数。
\hspace{15pt}保证 n 的最后一位不为 0


输出描述:
\hspace{15pt}在一行上输出一个整数,代表处理后的数字。
示例1

输入

9876673

输出

37689

说明

\hspace{15pt}在这个样例中,先将数字倒序,得到 3766789 ,然后去除重复数字,得到 37689
示例2

输入

12345678

输出

87654321
import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();

        StringBuilder sb =  new StringBuilder();

        for(int i = str.length()-1;i >= 0; i--){
           if(str.lastIndexOf(str.charAt(i)) == i){
                sb.append(str.charAt(i));
            }
        }
        System.out.print(sb.toString());
    }
}
发表于 2025-02-19 16:58:28 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n=0; //使用了的总数
        boolean[] flag = new boolean[10]; //标记该数字是否被使用
        String s = in.nextLine();
        for(int i=s.length()-1;i>=0;i--){
            int t = s.charAt(i)-'0';
            if(!flag[t]){
                flag[t]=true;
                n++;
                System.out.print(t);
            }
            if(n==10) //十个数字都使用了
                break;
        }
    }
}

发表于 2025-02-11 15:23:22 回复(0)
利用数组寻址的特性求解
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);

String line = in.nextLine();
int[] array = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1};
StringBuffer sb = new StringBuffer();
char[] chars = line.toCharArray();
for (int i = chars.length - 1; i >= 0 ; i--) {
char aChar = chars[i];
Integer integer = Integer.parseInt(String.valueOf(aChar));
if (array[integer - 1] < 0) {
sb.append(aChar);
}
array[integer - 1] = integer;
}

System.out.println(sb);
}
}
发表于 2024-11-28 23:00:39 回复(0)
Java解法,用字符串的特性求解:
import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Set<Character> characters = new HashSet<>();
        StringBuilder sb = new StringBuilder();
        Scanner sc = new Scanner(System.in);
        // System.out.println("请输入要反转的数字:");
        String number = sc.next();

        for (int i = number.length() - 1; i >= 0 ; i--) {
            Character ch = number.charAt(i);
            if(!characters.contains(ch)){
                characters.add(ch);
                sb.append(ch);
            }
        }

        System.out.println(sb.toString());
    }
}

发表于 2024-09-12 16:41:18 回复(0)
import java.util.ArrayList;
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        String str = in.nextLine();
        int length = str.length() - 1;
        ArrayList<Character> ArrayList = new ArrayList<>();
        for (int i = length; i >= 0; i--) {
            if (!ArrayList.contains(str.charAt(i))) {
                ArrayList.add(str.charAt(i));
            }
        }
        for(char ch : ArrayList){
            System.out.print(ch);
        }
    }
}

发表于 2024-09-11 22:50:58 回复(1)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            String a = String.valueOf(in.nextInt());
            StringBuilder b = new StringBuilder();
            for (int i=a.length()-1; i>=0; i--) {
                if (!String.valueOf(b).contains(String.valueOf(a.charAt(i)))) {
                    b.append(String.valueOf(a.charAt(i)));
                }
            }
            System.out.println(Integer.parseInt(b.toString()));
        }
    }
}
发表于 2024-09-06 15:27:57 回复(0)
import java.util.*;
import java.io.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        String s = new StringBuilder(bf.readLine()).reverse().toString();
        StringBuilder sb = new StringBuilder().append(s.charAt(0));
        for (int i = 1; i < s.length(); i++) {
            String temp = String.valueOf(s.charAt(i));
            if (!sb.toString().contains(temp)) {
                sb.append(temp);
            }
        }
        System.out.println(sb);
    }
}


发表于 2024-09-04 16:02:04 回复(0)
import java.util.*;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String string = in.nextLine();
        StringBuilder tempString = new StringBuilder(string);
        tempString = tempString.reverse();

        List<String> list = Arrays.asList(tempString.toString().split(""));
        List<String> tmpList = list.stream().distinct().collect(Collectors.toList());
        for (String str : tmpList) {
            System.out.print(str);
        }
    }
}
发表于 2024-07-15 18:02:44 回复(0)
import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str = scanner.nextLine();
        StringBuilder sb = new StringBuilder();
        HashSet<Character> set = new HashSet<>();
        for (int i = str.length() - 1; i >= 0; i--) {
            char ch = str.charAt(i);
            if (str.lastIndexOf(ch) == i) {
                sb.append(ch);
                set.add(ch);
            }            
        }
        System.out.println(sb.toString());
    }
}

发表于 2024-07-02 22:31:33 回复(0)
import java.util.Scanner;

// 注意类名必须为 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
            String line = in.nextLine();
            if(line == null || "".equals(line)){
                System.out.println("");
                continue;
            }

            StringBuilder sb = new StringBuilder();
            char c;
            for(int i=line.length()-1;i >=0;i--){
                c = line.charAt(i);
                if(i != line.length()-1){
                    if(line.substring(i+1,line.length()).contains(String.valueOf(c))){
                        continue;
                    }
                }

                sb.append(c);
            }

            System.out.println(sb);
        }
    }
}

发表于 2024-06-19 06:56:25 回复(0)
两个解法,其实都大同小异……
方法1:
import java.util.Scanner;


public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String string = in.nextLine();
        int[] a = new int[10];
        int at;
        StringBuilder sb = new StringBuilder();
        for (int i = string.length() - 1; i >= 0; i--) {
            at = string.charAt(i) - '0';
            if (a[at] == 0) {
                a[at] = 1;
                sb.append(string.charAt(i));
            }
        }
        System.out.print(sb);
    }
}
方法2:
import java.util.*;


public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String string = in.nextLine();
        HashSet<Integer> set = new HashSet<>();
        StringBuilder sb = new StringBuilder();
        for (int i = string.length() - 1; i >= 0; i--) {
            if (set.contains((int) string.charAt(i))) {
                continue;
            }
            set.add((int) string.charAt(i));
            sb.append(string.charAt(i));
        }
        System.out.print(sb);
    }
}


发表于 2024-06-13 13:26:48 回复(0)
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        //System.out.println("请输入一个个位不为零的整数:");
        int num = input.nextInt();
        while (num % 10 == 0){
            //System.out.println("请重新输入:");
            num = input.nextInt;
        }
        LinkedHashSet<Integer> hashSet = new LinkedHashSet<Integer>();
//        String result = "";
        int count = 1;
        int a = num;
        while (a / 10 >= 1){//判断几位数
            count++;
            a /= 10;
        }
        for (int i = 0; i < count; i++) {
            int re = (int)(num / Math.pow(10, i) % 10);//从个位依次到最高位add到LinkedHashSet里
            hashSet.add(re);
//            result += re;
//            System.out.println(result);
        }
//        System.out.println(result);//不能解决重复的问题
        Iterator iterator = hashSet.iterator();
        while (iterator.hasNext()){
            System.out.print(iterator.next());
        }
    }

}

发表于 2024-06-01 19:41:02 回复(0)
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        scanner.close();

        // 使用 Set 来记录已经出现的数字
        Set<Character> seenDigits = new HashSet<>();
        StringBuilder result = new StringBuilder();

        // 将整数转换为字符串以便逐字符处理
        String numStr = Integer.toString(n);

        // 从右向左遍历字符串
        for (int i = numStr.length() - 1; i >= 0; i--) {
            char digit = numStr.charAt(i);
            // 如果当前数字未出现过,则添加到结果中
            if (!seenDigits.contains(digit)) {
                seenDigits.add(digit);
                result.append(digit);
            }
        }

        // 输出最终结果
        System.out.println(result.toString());

    }
}

发表于 2024-05-14 15:23:07 回复(0)
public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    // 注意 hasNext 和 hasNextLine 的区别
    int a = in.nextInt();
    Set<Integer> set = new LinkedHashSet<>();
    String b = String.valueOf(a);
    for (int i = b.length() - 1; i >= 0 ; i--) {
        set.add(Integer.parseInt(b.charAt(i) + ""));
    }
    for (int s : set) {
        System.out.print(s);
    }
}

发表于 2024-05-06 07:23:27 回复(0)
从右到左输出一个然后字符串replace掉这个输出的结果,循环进行,直到字符串长度为0
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
            String a = in.nextLine();
            while(a.length()>0)
            {
               System.out.print(a.charAt(a.length()-1));
               String t =a.charAt(a.length()-1)+"";
               a=a.replace(t,"");
            }
    }
}


发表于 2024-05-01 23:16:28 回复(0)
import java.util.LinkedHashSet;
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        char[] input = in.nextLine().toCharArray();

        LinkedHashSet<Integer> set = new LinkedHashSet<>();
        for(int i=input.length-1;i>=0;i--){
            set.add(input[i]-'0');
        }

        for(Integer num:set) {
            System.out.print(num);
        }
    }
}

编辑于 2024-04-20 12:08:52 回复(0)
import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        List<Integer> list = new ArrayList<>();
        while (num > 0) {
            int temp = num % 10;
            if (!list.contains(temp)) {
                list.add(temp);
            }
            num = num / 10;
        }
        for (Integer integer : list) {
            System.out.print(integer);
        }
    }
}
编辑于 2024-04-15 18:34:35 回复(0)