0

Question Link : https://leetcode.com/problems/roman-to-integer/

My code is running fine on my computer but during my attempts to upload it to leet code it shows the following:

Line 20: Char 18: runtime error: index 10 out of bounds for type 'int [10]' [solution.c]


int romanToInt(char * s){
    char a[7]={'M','D','C','L','X','V','I'};
    int b[7]={1000,500,100,50,10,5,1};
    

    int x;
    x=strlen(s);
  
    int c[x];

    for(int i=0;i<x;++i)
    {
        for(int j=0;j<7;++j)
        {
            if(s[i]==a[j])
            {
              
                c[i]=b[j];
                break;
            }
        }

    }
   

    int sum=0;
    for(int i=0;i<x;++i)
    {

        if(c[i]<c[i+1]&&i!=x-1)
        {
            sum-=c[i];

        }
        else
        {
            sum+=c[i];
        }
    }
    //printf("%d",sum);

    return sum;
}

Running the same code on my computer using it as a custom function works just fine

#include <stdio.h>
#include<string.h>
int romanToInt(char * s);
void main()
{
   char a[100];
   char* p;
   gets(a);
   p=a;
   int sum= romanToInt(p);
   printf("%d",sum);

}

int romanToInt(char * s){
    char a[7]={'M','D','C','L','X','V','I'};
    int b[7]={1000,500,100,50,10,5,1};


    int x;
    x=strlen(s);

    int c[x];

    for(int i=0;i<x;++i)
    {
        for(int j=0;j<7;++j)
        {
            if(s[i]==a[j])
            {

                c[i]=b[j];
                break;
            }
        }

    }


    int sum=0;
    for(int i=0;i<x;++i)
    {

        if(c[i]<c[i+1]&&i!=x-1)
        {
            sum-=c[i];

        }
        else
        {
            sum+=c[i];
        }
    }
    //printf("%d",sum);

    return sum;
}

Why isn't leet code accepting this result?

0 Answers0