Skip to content

Latest commit

 

History

History
84 lines (66 loc) · 1.48 KB

22.md

File metadata and controls

84 lines (66 loc) · 1.48 KB
void all(int & ans,string s,int i,bool &f)
    {
        if(i==s.size() || f==false)
            return;
            
        if(s[i]>='0' && s[i]<='9')
        {
            ans=ans*10 + (s[i]-'0');
            all(ans,s,i+1,f);
        }
        else
            f=false;
        return;
    }
    int atoi(string s) {
        //Your code here
        
        int sign=1,i=0;
        
        if(s[0]=='-')
        {
            sign=0;
            i=1;
        }
        
        int ans=0;
        bool f=true;
            
        all(ans,s,i,f);
        
        if(!f)
            return -1;
        
        if(sign==0)
            return -ans;
        
        return ans;
    }

METHOD 2

int sumi(int j,string str)
{
      int sum=0;     
    for(int i=j;str[i]!='\0';i++)
    {
        if(!isdigit(str[i]))
            return -1;
            
        int c=str[i]-'0';
        sum=sum*10 +c;    
    }
    return sum;
}

    int atoi(string str) {
        //Your code here
        int sum=0;
        
             if(isdigit(str[0]))
            {
                sum=sumi(0,str);
                return sum;
            }
            else if (str[0]=='-')
            {
               sum=sumi(1,str);
               if(sum>0)
                return -sum;
                return sum;    
            }
            else
                return -1;
    
       
    }