FIA amex fund serve 有2%吗?# Money - 海外理财
W*e
1 楼
【leetcode restore IP address】这题,思路和算法我都写出来了,不过有个地方觉
得很奇怪,小问题 ,可是我没想明白,请指教!
问题就是为什么要用tmp来代替ans这个参数?在下面的code里我有coment
class Solution {
public:
vector restoreIpAddresses(string s) {
vector result;
string ans;
dfs(s,&result,ans,4);
return result;
}
void dfs(string s,vector*result, string ans,int tokenLeft)
{
int i,sectionValue=0;
if(s.length()==0 && tokenLeft==0)
{
result->push_back(ans);
return;
}
if(tokenLeft==0||s.length()==0)
{
return;
}
if(s.at(0)=='0')
{
if(tokenLeft!=4)
{
ans.append(".");
}
ans.append("0");
dfs(s.substr(1),result,ans,tokenLeft-1);
}
else
{
for(i=0;i<3&&i {
sectionValue = sectionValue *10+s.at(i)-'0';
if(sectionValue<=255)
{
//string tmp = ans;
if(tokenLeft!=4)
{
ans.append(".");
}
//tmp.append(s.substr(0,i+1));
ans.append(s.substr(0,i+1));//这里我直接用ans,并且直接
传进入下面的dfs,总是会出错。但是用tmp代替ans确没问题????????
dfs(s.substr(i+1),result,ans,tokenLeft-1);//tmp
}
}
}
}
};
细节不行。。求指教!!
得很奇怪,小问题 ,可是我没想明白,请指教!
问题就是为什么要用tmp来代替ans这个参数?在下面的code里我有coment
class Solution {
public:
vector
vector
string ans;
dfs(s,&result,ans,4);
return result;
}
void dfs(string s,vector
{
int i,sectionValue=0;
if(s.length()==0 && tokenLeft==0)
{
result->push_back(ans);
return;
}
if(tokenLeft==0||s.length()==0)
{
return;
}
if(s.at(0)=='0')
{
if(tokenLeft!=4)
{
ans.append(".");
}
ans.append("0");
dfs(s.substr(1),result,ans,tokenLeft-1);
}
else
{
for(i=0;i<3&&i
sectionValue = sectionValue *10+s.at(i)-'0';
if(sectionValue<=255)
{
//string tmp = ans;
if(tokenLeft!=4)
{
ans.append(".");
}
//tmp.append(s.substr(0,i+1));
ans.append(s.substr(0,i+1));//这里我直接用ans,并且直接
传进入下面的dfs,总是会出错。但是用tmp代替ans确没问题????????
dfs(s.substr(i+1),result,ans,tokenLeft-1);//tmp
}
}
}
}
};
细节不行。。求指教!!