zoukankan      html  css  js  c++  java
  • 提取不重复的整数

    题目描述

    输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。


    输入描述:

    输入一个int型整数


    输出描述:

    按照从右向左的阅读顺序,返回一个不含重复数字的新的整数

    输入例子:
    9876673
    
    输出例子:
    37689


    思路1:以字符串形式接收数字,使用ArrayList接收数组中不重复的元素

    代码:
     1 import java.util.*;
     2 
     3 public class Test1 {
     4 
     5     public static void main(String[] args) {
     6         Scanner sc =new Scanner(System.in);
     7         String s = sc.next();
     8         int len = s.length();
     9         List<String> li = new ArrayList<String>();
    10         for(int i=len-1;i>=0;i--){
    11             if(!(li.contains(String.valueOf(s.charAt(i))))){
    12                 li.add(String.valueOf(s.charAt(i)));
    13             }
    14         }
    15         int len1=li.size();
    16         for(int i=0;i<len1;i++){
    17             System.out.print(li.get(i));
    18         }
    19         sc.close();
    20     }
    21 
    22 }

    思路2:沿着思路1继续思考,思路1中需要判断原链表中是否已经存在将要添加的元素,考虑能否不进行判断而直接添加,并自动去重呢?考虑Set集合,Set集合有HashSet,但是HashSet不能保证元素的排列顺序,顺序有可能发生变化,而TreeSet会使添加的数字按照大小自动升序排序;故考虑使用HashSet的子类LinkedHashSet,它可以使得元素看起来是以插入的顺序保存的,也就是说,当遍历LinkedHashSet集合里的元素时,LinkedHashSet将会按元素的添加顺序来访问集合里的元素。

    代码:

     1 import java.util.*;
     2 
     3 public class Test3 {
     4 
     5     public static void main(String[] args) {
     6         Scanner sc =new Scanner(System.in);
     7         String s = sc.next();
     8         int len = s.length();
     9         Set<String> li = new LinkedHashSet<String>();
    10         for(int i=len-1;i>=0;i--){
    11                 li.add(String.valueOf(s.charAt(i)));
    12         }
    13         Iterator<String> it = li.iterator();
    14         while(it.hasNext()){
    15             System.out.print(it.next());
    16         }
    17         sc.close();
    18     }
    19 
    20 }

     思路3:用栈来存储;判断如同使用List表一样,但注意的是不能使用pop方法依次返回栈顶元素因为整数的最后一位需要先进栈(题目要求从右向左读并去重),并且需要先输出,栈底元素位置为0,可以考虑使用从接口 java.util.List 继承的迭代器输出栈元素,或者使用从从类 java.util.Vector 继承的方法get(index)方法

    代码:

     1 import java.util.Scanner;
     2 import java.util.Stack;
     3 
     4 /**
     5  * 使用栈来存储
     6  * 
     7  * @author zbt
     8  *
     9  */
    10 public class Test4 {
    11 
    12     public static void main(String[] args) {
    13 
    14         Scanner sc = new Scanner(System.in);
    15         String s = sc.nextLine();
    16         Stack<String> st = new Stack<String>();
    17         for (int i = 0; i < s.length(); i++) {
    18             if (!st.contains(String.valueOf(s.charAt(i)))) {
    19                 st.push(String.valueOf(s.charAt(i)));
    20             }
    21         }
    22         int len = st.size();
    23         for (int i = 0; i < len; i++) {
    24             System.out.print(st.pop());
    25         }
    26         sc.close();
    27 
    28     }
    29 }

    思路4:以整数形式接收数字,取余数求每一位数字,然后把不重复每一位数字存到链表中

    代码:

     1 import java.util.*;
     2  
     3 public class Temp2{
     4     public static void main(String[] args){
     5         Scanner sc  = new Scanner(System.in);
     6         int n  = sc.nextInt();
     7         List<Integer> li = new ArrayList<Integer>();
     8         Integer n1 = new Integer(n);
     9         for(int i=0;i<n1.SIZE;i++){
    10             int temp=n1%10;
    11             if(!li.contains(temp)&&(n1 !=0)){
    12                 li.add(temp);
    13             }
    14              n1=n1/10;
    15         }
    16         for(Integer li1 : li){
    17             System.out.print(li1);
    18         }
    19     }
    20 }

  • 相关阅读:
    修改MSSql数据库名
    系统更新0x8DDD0007号错误解决方案
    win7密匙 win7永久激活工具
    Ps制作的立体字效果
    PS合成人物与风景
    word打不开_如何删除normal.dot
    查看自己的IP地址和网卡的MAC地址
    char varchar nvarchar区别
    配置节点简单使用
    线程相关的概念
  • 原文地址:https://www.cnblogs.com/crazybuddy/p/5322767.html
Copyright © 2011-2022 走看看