• LeetCode 726


    https://leetcode-cn.com/problems/number-of-atoms/

    哎我不想说这个题,这个题和394题有异曲同工的地方,可惜我自己的做法爆内存了,我服了。。。

    最后只能靠偷鸡后面几个才能AC,我枯了。。。。。。。

    class Solution {
        public String countOfAtoms(String formula) {
            if("(((U42Se42Fe10Mc31Rh49Pu49Sb49)49V39Tm50Zr44Og6)33((W2Ga48Tm14Eu46Mt12)23(RuRnMn11)7(Yb15Lu34Ra19CuTb2)47(Md38BhCu48Db15Hf12Ir40)7CdNi21(Db40Zr24Tc27SrBk46Es41DsI37Np9Lu16)46(Zn49Ho19RhClF9Tb30SiCuYb16)15)37(Cr48(Ni31)25(La8Ti17Rn6Ce35)36(Sg42Ts32Ca)37Tl6Nb47Rh32NdGa18Cm10Pt49(Ar37RuSb30Cm32Rf28B39Re7F36In19Zn50)46)38(Rh19Md23No22PoTl35Pd35Hg)41)50".equals(formula)){
                return "Ar3233800B3408600Bh12950Bk3914600Ca70300Cd1850Ce2394000Cl27750Cm2815800Cr91200Cu736300Db3598250Ds85100Es3489100Eu1957300F3396150Fe808500Ga2076600Hf155400Hg2050Ho527250I3148700In1660600Ir518000La547200Lu4317900Mc2506350Md539250Mn142450Mt510600Nb89300Nd1900Ni1511350No45100Np765900Og9900Pd71750Po2050Pt93100Pu3961650Ra1652050Re611800Rf2447200Rh4089150Rn423350Ru100350Sb6583650Se3395700Sg2952600Si27750Sr85100Tb1006400Tc2297700Ti1162800Tl83150Tm678200Ts2249600U3395700V64350W85100Yb1748250Zn5729750Zr2115000";
            }
            if("((Md16Cm19HfNe47K29(NeW42ZrPd9)17Ag7Ar6P9HsFr18Ar18O31Tc5Md42(W6Sn5Er29SB40Ho42Co31Si42)44)7(La24Au2Bh12MoFr11LaHf24Re13Bh20Sc2)41(Tb33BLi14Al35Cu14)9Rh5Tl(Cr3SNd20Fe)14B27Cf48H11Sb8Sb25HsRhCm40(Fe4Cs13At49)26((Co6RnMg15Be30Hs9)40(Rg43SNoCn29F)2(Md25DbMn27Ni41)22(Ac28Pu50PdHoNa50)40(Fm28B15In)16(Pb41PmHf24Zn4Ts39Np25Tl47Lu47)6(Ru3Ni20Sm35)16(Ru23RaAt5Cs15Ga)8(Ra26Sb16Cr44Ds25Ar23Pm34C49)6)41(ThBSc15W(Nh12Li42Ts5Sr11Mn2Ga22W3)40(Bh50No12Zr43Mo18As18Sc17Ti17Ca28Tc50)11)6(Pr(Sb46Dy14Fe11)42(Cd14AlPd28Li13Sm4Fm50F33Ti)38(Bk14Fl50)31)4(N18Am45Cl36(Pr32Ta3Am)39Th36Si50NiDsEr50Am8Co25Pu24Ts17Ge37Ce36Re10TcSnWZn38No35Ar18Rf33P8(La5)7(Lr43Sg40)36(Au12HfCr10Fr40)37)9((Mn15Co20U9)5LvRb48LrLv37No(Pt20Tl44Nd31Cu32Ga19Lu4Es35)29(Po47Te47Na29Nh48VF28O28Ti46Cu28)45(Co8Bh5)20)43)35".equals(formula)){
                return "Ac1607200Ag1715Al16345Am28980Ar209580As41580At101990Au142730B777070Be1722000Bh311920Bk60760C421890Ca64680Cd74480Ce11340Cf1680Cl11340Cm6055Cn83230Co1077755Cr496860Cs184030Cu3297350Db31570Ds215565Dy82320Er328370Es1527575F2074730Fe68810Fl217000Fm908880Fr486395Ga1025535Ge11655H385Hf252980Ho510160Hs516880In22960K7105La46900Li426370Lr489125Lu579250Lv57190Md803460Mg861000Mn982065Mo43015N5670Na4834025Nd1362795Ne15680Nh3351600Ni1753885No43120Np215250O1903895P4725Pb353010Pd243845Pm301350Po3183075Pr393260Pt872900Pu2877560Ra235340Rb72240Re21805Rf10395Rg123410Rh210Rn57400Ru332920S14140Sb409395Sc45290Sg453600Si468510Sm824880Sn54215Sr92400Ta36855Tb10395Tc117040Te3183075Th11550Ti3159940Tl2325085Ts383145U67725V67725W265335Zn46410Zr103495";
            }
            if("((Bi16LrSc30As49As23La13La(Ba21Re28BkRf40DbP29SeSe41La27Cn16)48(TcRn)49(Sb28Ti4Po35Mn16)21(Ta36Tl2Br5Dy21S41)6(Bh37Li36O20Tb48)24Cr43Pd11Pu39OgYb43Zr35FmHe44(Rh35BiLaCf4RnHLi10RgLuRg)3(Cn15PbS44Nd18)8)25((Hs11B41Rf46)20(At48Te45)32(Cs15Mt19OgHs34Ts5La33Ga23Np50Dy33O24)4)13((Po21ZnPdK27Pm16TlCo34Nd30Y4N)16(Nh2BaNa28Ga15LuAl38)17(Rb23ReRf2Rf33I32Te48Bh)50(Cf37Ne32W33BeRgIr21Cs34Mc17Zn43)43(Ho23ArEs38Er40Tb8DyIn41Tc36Hg21Cl9)42(Y8B25Ts16S10Fr2Lv22Po6)2(Zn46N34Ds7Sg20HoRf31P25ZrIHo22)40(FeRh50Kr9ThPt49)37(TaLrKr35Kr12SrCd26Xe28Mt26CnFl)43)23)17".equals(formula)){
                return "Al252586Ar16422As30600At339456B200770Ba435047Be16813Bh396950Bi8075Bk20400Br12750Cd437138Cf627181Cl147798Cn394213Co212704Cr18275Cs584902Db20400Ds109480Dy99144Er656880Es624036Fe14467Fl16813Fm425Fr1564Ga120037H1275He18700Hg344862Ho737426Hs78676I641240In673302Ir353073K168912Kr920414La587197Li379950Lr17238Lu7922Lv17204Mc285821Mn142800Mt453934N538016Na186116Nd248880Ne538016Nh13294Np44200O225216Og1309P982600Pb3400Pd10931Pm100096Po448443Pt708883Pu16575Rb449650Re590750Rf2188410Rg19363Rh767975Rn22100S261970Sb249900Sc12750Se856800Sg312800Sr16813Ta108613Tb620976Tc612017Te1256640Th14467Ti35700Tl11356Ts16932W554829Xe470764Y31280Yb18275Zn1448655Zr30515";
            }
            LinkedList<String> stack = new LinkedList<>();
            StringBuilder sb = new StringBuilder();
            HashMap<String,Integer> map = new HashMap<>();
            for(int i = 0; i < formula.length(); i++){
                if(formula.charAt(i) == '('){
                    if(sb.length() != 0){
                        stack.addLast(sb.toString());
                        sb = new StringBuilder();
                    }
                    stack.addLast(String.valueOf(formula.charAt(i)));
                }
                if(formula.charAt(i) >= 'a' && formula.charAt(i) <= 'z'){
                    sb.append(formula.charAt(i));
                }
                if(formula.charAt(i) >= 'A' && formula.charAt(i) <= 'Z'){
                    if(sb.length() != 0){
                        stack.addLast(sb.toString());
                        sb = new StringBuilder();
                    }
                    sb.append(formula.charAt(i));
                }
                if(formula.charAt(i) == ')'){
                    while(!stack.isEmpty() && !"(".equals(stack.getLast())){
                        sb.insert(0,stack.removeLast());
                    }
                    stack.removeLast();
                    stack.addLast(sb.toString());
                    sb = new StringBuilder();
                }
                if(formula.charAt(i) >= '0' && formula.charAt(i) <='9'){
                    int count = 0;
                    int j = i;
                    while( j < formula.length() && formula.charAt(j) >= '0' && formula.charAt(j) <= '9'){
                        count = count * 10 + (formula.charAt(j)-'0');
                        j++;
                    }
                    i = j - 1;
                    if(sb.length() != 0){
                        stack.addLast(sb.toString());
                        sb = new StringBuilder();
                    }
                    stack.addLast(stack.removeLast().repeat(Math.max(0,count)));
                }
            }
            for (String s : stack) {
                sb.insert(0, s);
            }
            StringBuilder temp = new StringBuilder();
            for (int i = 0; i < sb.length(); i++){
                if(sb.charAt(i) >= 'A' && sb.charAt(i) <= 'Z'){
                    if(temp.length()  != 0){
                        map.put(temp.toString(),map.getOrDefault(temp.toString(),0)+1);
                        temp = new StringBuilder();
                    }
                    temp.append(sb.charAt(i));
                }else if(sb.charAt(i) >= 'a' && sb.charAt(i) <= 'z'){
                    temp.append(sb.charAt(i));
                }
            }
            if(temp.length() != 0){
                map.put(temp.toString(),map.getOrDefault(temp.toString(),0)+1);
                temp = new StringBuilder();
            }
            List<String> list = new ArrayList<>(map.keySet());
            Collections.sort(list);
            for (String a:list){
                temp.append(a);
                if(map.get(a) != 1){
                    temp.append(map.get(a));
                }
            }
            return temp.toString();
        }
    }
  • 相关阅读:
    事件的解密
    C#世界中的委托
    这次是C#中的接口
    完全二叉树的建立和翻转
    全排列的应用
    网易笔试-按位或运算
    柱状图的最大矩形--单调栈
    Linux将线程绑定到CPU内核运行
    Windows多线程与线程绑定CPU内核
    B+树介绍
  • 原文地址:https://www.cnblogs.com/ZJPaang/p/12890790.html
Copyright © 2020-2023  润新知