笔试算法《提取不重复整数》
原创
©著作权归作者所有:来自51CTO博客作者FelixLHT的原创作品,请联系作者获取转载授权,否则将追究法律责任
题目描述
- 输入一个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);
//
// }
}