您的位置:首页 > 产品设计 > UI/UE

467. Unique Substrings in Wraparound String

2017-03-14 19:19 260 查看
简单DP题目,分成两部分处理,一部分是dp,另一部分是sum。dp[i]定义为包含p[i]时,拥有的可能性个数。如果p[i]与p[i+1]相连,则dp[i]=1+dp[i+1],否则,dp[i]为1。

但是sum的更新需要经一步判断,开辟了count一个map,避免重复计数。

class Solution {
public:
int findSubstringInWraproundString(string p) {

if(p.size()==0)
return 0;

int sum=0;
vector<int> dp(p.size(),0);
map<char,int> count;

dp[p.size()-1]=1;
count[p[p.size()-1]]=1;
sum=1;

for(int i=p.size()-2;i>=0;i--)
{
if((p[i]-'a'+1)%26==p[i+1]-'a')
dp[i]=1+dp[i+1];
else
dp[i]=1;
if(count[p[i]]<dp[i])
{
sum=sum-count[p[i]]+dp[i];
count[p[i]]=dp[i];
}
}

return sum;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: