一、题目
二、解题步骤
下面是用动态规划的思想解决这道题的过程,相信各位小伙伴都能看懂并且掌握这道经典的动规题目滴。
三、参考代码
cpp
class Solution {
public:
int findSubstringInWraproundString(string s) {
int n=s.size();
vector<int> dp(n,1);
int ret=0;
for(int i=1;i<n;i++)
{
if(s[i]==s[i-1]+1||(s[i-1]=='z'&&s[i]=='a'))
{
dp[i]+=dp[i-1];
}
}
//去重
int arr[26]={0};
for(int i=0;i<n;i++)
{
arr[s[i]-'a']=max(dp[i],arr[s[i]-'a']);
}
for(const auto& e:arr)
{
ret+=e;
}
return ret;
}
};