385. Mini Parser

来源:互联网 发布:android java 编辑:程序博客网 时间:2024/05/22 16:50

递归实现,判断字符串结束最好用i<len,而不是s[i]!='\0',这样不安全。可能出现runtime error 

class Solution {public:    NestedInteger deserialize(string s) {        bool level=false;        int len=s.size();        if(s[0]=='[')        {            level=true;            len-=2;            s=s.substr(1,len);        }                NestedInteger obj;                //for(int i=0;s[i]!='\0';i++)        for(int i=0;i<len;i++)        {            if(isdigit(s[i])||s[i]=='-')            {                string tmp="";                while(i<len&&(isdigit(s[i])||s[i]=='-'))                {                    tmp+=s[i++];                }                int item=atoi(tmp.c_str());                NestedInteger ni(item);                if(level)                    obj.add(ni);                else                    obj.setInteger(item);            }            else if(s[i]=='[')            {                int cnt=1;                int sta=i;                i++;                while(i<len&&cnt!=0)                {                    if(s[i]=='[')                        cnt++;                    else if(s[i]==']')                        cnt--;                    i++;                }                string tmp=s.substr(sta,i-sta);                NestedInteger cur=deserialize(tmp);                obj.add(cur);            }        }        return obj;    }};


0 0
原创粉丝点击