2025年10月22日 星期三

[880] Decoded String at Index(TBD)

暴力法又超時啦!!!我難過!!!先附在後面
勉強看懂了~但是~寫不出來啊啊啊~~~(抱頭)
bool isDigit(char a)
{
if (a-'0' >=2 && a-'0'<= 9)
return true;
else
return false;
}

char* decodeAtIndex(char* s, int k) {
int len = strlen(s);
long long total_len=0;
for (int i=0 ; i<len; i++)
{
if (isDigit(s[i]))
total_len = total_len* (s[i]-'0');
else
total_len++;
}
for (int i=len-1; i>=0; i--)
{
if (isDigit(s[i]))
{
total_len=total_len/(s[i]-'0');
k=k%total_len;
}
else
{
if ((k==0) || (k==total_len))
{
s[i+1]='\0';
return s+i;
}
total_len--;
}
}
return "";
}

暴力法


bool isDigit(char a)
{
if (a-'0' >=2 && a-'0'<= 9)
return true;
else
return false;
}

char* decodeAtIndex(char* s, int k) {
int top = -1;
int len = strlen(s);
char *ret = calloc (k+1, sizeof(char));
for (int i=0 ; i<len; i++)
{
if (top == k-1)
return ret+top;

if (!isDigit(s[i]))
{
ret[++top]=s[i];
continue;
}
int repeat = s[i]-'0'-1 ;
int local_len = top+1;
int all = local_len* repeat;
for (int j=0;j<repeat;j++)
{
for (int z=0; z<local_len; z++)
{
if (top == k-1)
{
return ret+top;
}
ret[++top]=ret[z];
}
}
}
return ret+top;
}

沒有留言:

張貼留言