题目大意是给出编码之后的字符串,求解码后的字符串的指定位置的字符.
解题思路:
(1)求解码后的字符串的长度.
(2)回推出指定位置的字符.
代码如下:
class Solution {
public:
string decodeAtIndex(string s, int k) {
long ds=0;
int ss=s.size();
for(int i=0;i<ss;i++)
{
ds=(isdigit(s[i]))?(ds*(s[i]-'0')):(ds+1);
}
for(int i=ss-1;i>=0;i--)
{
k%=ds; //用ds去回退到k的位置
if(k == 0 && isalpha(s[i]))//等于0,且是字母,那么满足条件.
{
return string(1,s[i]);//构造字符串
}
if(isdigit(s[i]))
{
ds/=(s[i]-'0');
}else
{
ds--;
}
}
return "gg";
}
};