1. 程式人生 > 實用技巧 >【leetcode】94. 二叉樹的中序遍歷

【leetcode】94. 二叉樹的中序遍歷

void recursion(char * s,int slen,char** arr,int* returnSize,char* temp,int tlen,int cnt,int start,int len){
    if(cnt==4){
        if(tlen==len+4){
            arr[(*returnSize)]=(char*)calloc(tlen,sizeof(char));
            memcpy(arr[(*returnSize)],temp,tlen-1);
            (*returnSize)++;
        }
        
return; } for(int i=start; i<=3 && slen+i<=len; i++){ if(i>=2 && s[0]=='0') break; if(i==3 && (s[i-3]-'0')*100+(s[i-2]-'0')*10+(s[i-1]-'0') >255) break; memcpy(temp+tlen,s,i); strcat(temp,"."); recursion(s
+i,slen+i,arr,returnSize,temp,tlen+i+1,cnt+1,start,len); memset(temp+tlen,0,i+1); } } char ** restoreIpAddresses(char * s, int* returnSize){ int len=strlen(s); char** arr=(char**)calloc(1000,sizeof(char*)); char temp[1000]={0}; *returnSize=0; if(len>12 || len<4) return NULL;
int start=(len<11)?1 :(len<12)?2 :3; recursion(s,0,arr,returnSize,temp,0,0,start,len); return arr; }