- [编程|100分] 字符串去重及排序
时间限制:C/C++ 1秒,其他语言 2秒
空间限制:C/C++ 32768K,其他语言 65536K
题目描述
输入一个长度不超过10位的正整数,从左向右阅读,去除重复的数字,再从右向左阅读,返回一个新的整数。
输入描述:
一个长度不超过10位的正整数
输出描述:
去重重排后的一个正整数
示例1
输入
98766730
输出
36789
package HWday02;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Demo1_hj {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int m=in.nextInt();
int [] temp=new int[10];
int [] input=new int[10];
List<Integer> list1=new ArrayList<>();
List<Integer> list2=new ArrayList<>();
int n=0;
while (m!=0){
n=m%10; //取后一位
m=m/10;
list1.add(n);
}
for(int i=list1.size()-1;i>=0;i--){
list2.add(list1.get(i));
}
List<Integer> result=SortRepeat(list2);
int out=result.size()-1;
for(int i=result.size()-2;i>=0;i--){
out=out*10+result.get(i);
}
System.out.println(out);
}
//去重
public static List<Integer> SortRepeat(List<Integer> number){
List<Integer> result=new ArrayList<>();
result.add(number.get(0));
for(int i=1;i<number.size();i++){
Boolean p=true;
for(int j=0;j<i;j++){
if(number.get(i)==number.get(j)){
p=false;
}
}
if(p==true){
result.add(number.get(i));
}
}
return result;
}
}