递归实现,判断字符串结束最好用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;
}
};
本文介绍了一种使用递归方法解析嵌套JSON字符串的方法。通过C++实现了一个名为Solution的类,其中包含一个名为deserialize的成员函数,该函数接受一个字符串作为参数并返回一个NestedInteger对象。此方法首先检查字符串是否以方括号开始,如果是,则去掉方括号并继续解析内部的内容。解析过程中,该方法区分了数字和嵌套数组的情况,并相应地处理。
2542

被折叠的 条评论
为什么被折叠?



