消除重复数字以后的最大整数

此篇博客介绍了一种Java实现的方法,通过包装wordcount字符串并将重复数字合并,生成一个没有重复数字且保持原有顺序的最大整数序列。使用了链表和哈希映射来跟踪每个数字及其位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package wordcount.消除重复数字以后的最大整数;

import java.util.*;

public class Main {
    public static void main(String[] args){
        String str="423234";
        Node head=new Node();
        Node tail=new Node();
        head.next=tail;
        tail.pre=head;
        LinkedList<Integer> list=new LinkedList<>();
        Map<Integer,Node> last=new HashMap<>();
        for(int i=0;i<str.length();++i){
            Integer now=Integer.valueOf( str.substring(i,i+1));
            if(last.containsKey(now)){
                Node index=last.get(now);
                if(index.next!=tail&&index.num<index.next.num){
                    index.pre.next=index.next;
                    index.next.pre=index.pre;
                    Node nowNode= new Node(now);
                    tail.pre.next=nowNode;
                    nowNode.pre=tail.pre;
                    nowNode.next=tail;
                    tail.pre=nowNode;
                    last.put(now,nowNode);

                }
            }else{
                Node nowNode= new Node(now);
                tail.pre.next=nowNode;
                nowNode.pre=tail.pre;
                nowNode.next=tail;
                tail.pre=nowNode;
                last.put(now,nowNode);
            }
        }
        Node curr=head.next;
        for(;curr!=tail;curr=curr.next){
            System.out.print(curr.num);
        }
    }
}
class Node{
    int num;
    Node next;
    Node pre;

    public Node(){

    }
    public Node(int num){
        this.num=num;
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值