正向求解码后字符串的长度,逆向求解
class Solution {
public:
string decodeAtIndex(string s, int k) {
// 用long来避免溢出
long size = 0;
int n = s.size();
for (int i = 0; i < n; ++i)
{
if (s[i] >= 'a' && s[i] <= 'z')
{
++size;
}
else
{
size *= (s[i]-'0');
}
}
// 逆向去求解
for (int i = n - 1; i >= 0; --i)
{
k %= size;
if (k == 0 && s[i] >= 'a' && s[i] <= 'z')
{
return string{s[i]};
}
if (s[i] >= 'a' && s[i] <= 'z')
{
--size;
}
else
{
size /= (s[i]-'0');
}
}
return "";
}
};