【leetcode】43. 字符串相乘

char * multiply(char * num1, char * num2){
    if(*num1=='0' || *num2=='0')
        return "0";
    int i, j, len1=strlen(num1), len2=strlen(num2),temp, pst=(len1+len2)*2-1, cur;
    char* s=(char*)calloc((len1+len2)*2+1,sizeof(char));
    memset(s,0x30,(len1+len2)*2);
    
    for(j=len2-1; j>=0; j--){
        for(i=len1-1; i>=0; i--){
            cur=(len1-1-i)+(len2-1-j);
            temp= (num2[j]-'0')*(num1[i]-'0');
            s[pst-cur-1]+= (s[pst-cur]-'0'+ temp%10)>=10?1 :0;
            s[pst-cur] = (s[pst-cur]-'0'+ temp%10)%10 +'0';            
            s[pst-cur-2]+= ((s[pst-cur-1]-'0'+ temp / 10)>=10)?1 :0;
            s[pst-cur-1]= (s[pst-cur-1]-'0' + temp/10)%10 + '0';
            
        }
    }
    
    while(s[pst-cur-2]=='0')
        cur--;
    return s+pst-cur-2;
}
原文地址:https://www.cnblogs.com/ganxiang/p/14108880.html