题目描述

  • 输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。
    保证输入的整数最后一位不是0。
  • 输入描述:
    输入一个int型整数
  • 输出描述:
    按照从右向左的阅读顺序,返回一个不含重复数字的新的整数
  • 示例1
  • 输入
    9876673
  • 输出
    37689

代码

利用数组思维,每一位的数都是0-9直接,10个大小的数据可以包含其中

package org.lht.boot.lang.suanfa;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Arrays;

/**
* @author haitao.li
* @description: 题目描述
* 输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。
* 保证输入的整数最后一位不是0。
* 输入描述:
* 输入一个int型整数
* <p>
* 输出描述:
* 按照从右向左的阅读顺序,返回一个不含重复数字的新的整数
* <p>
* 示例1
* 输入
* 复制
* 9876673
* 输出
* 复制
* 37689
* @date 2021/4/12 11:01
*/
public class Huawei提取不重复整数 {

/**
* 一个不管多少位的正整数,都可以被一个10大小的数组存放下,利用这个思路
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String str = bufferedReader.readLine();
int[] arr = new int[10];
StringBuilder builder = new StringBuilder();
for (int j = str.length() - 1; j >= 0; j--) {
int num = Integer.parseInt(str.charAt(j) + "");
if (arr[num] != 1) {
arr[num] = 1;
builder.append(num);
}
}
System.out.println(builder.toString());
}


/**
* 牛客网最快
* 解法
* @param args
* @throws Exception
*/
// public static void main(String[] args) throws Exception{
// InputStream in = System.in;
// int available = in.available() - 1;
// char[] charList = new char[available];
// while (available -- > 0){
// charList [available] = (char) in.read();
// }
// String strb = "";
// for(int i =0;i<charList.length;i++){
// if(strb.lastIndexOf(String.valueOf(charList[i]))!= -1){
// continue;
// }
// strb += charList[i];
// }
// System.out.print(strb);
//
// }
}

笔试算法《提取不重复整数》_数组