Redian新闻
>
FIA amex fund serve 有2%吗?
avatar
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
}
}
}

}

};
细节不行。。求指教!!
avatar
a*e
2
如题,多谢。
avatar
d*3
3
假设当前字符串是123,ans="xxx.xxx",你当前ip段选择了1,
ans ="xxx.xxx.1",然后dfs到下一段(假设下一段成功了,即xxx.xxx.1.23)。然后退
回来,你再次尝试选12,这个时候ans+"12"="xxx.xxx.1.12",然后再加上下一步成了"
xxx.xxx.1.12.3",这显然是不对的。。。
avatar
e*n
4
为什么没有?
avatar
W*e
5

可是用tmp,tmp=ans,不是一样有这个问题么??

【在 d*******3 的大作中提到】
: 假设当前字符串是123,ans="xxx.xxx",你当前ip段选择了1,
: ans ="xxx.xxx.1",然后dfs到下一段(假设下一段成功了,即xxx.xxx.1.23)。然后退
: 回来,你再次尝试选12,这个时候ans+"12"="xxx.xxx.1.12",然后再加上下一步成了"
: xxx.xxx.1.12.3",这显然是不对的。。。

avatar
a*e
6
不是说用amex卡冲就没有吗

【在 e*********n 的大作中提到】
: 为什么没有?
avatar
W*e
7

想通了,谢谢啦!

【在 W********e 的大作中提到】
:
: 可是用tmp,tmp=ans,不是一样有这个问题么??

avatar
l*i
8
avatar
d*3
9
额。。。
avatar
g*x
10
yes
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。