Home Tags Posts tagged with "宏定义,函数"

宏定义,函数

给定一个字符串 S,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转。
示例 1:
输入:”ab-cd”
输出:”dc-ba”
示例 2:
输入:”a-bC-dEf-ghIj”
输出:”j-Ih-gfE-dCba”
示例 3:
输入:”Test1ng-Leet=code-Q!”
输出:”Qedo1ct-eeLg=ntse-T!”
char * reverseOnlyLetters(char * S){
    //可以用isalpha函数宏定义(islower小写isupper大写)判断是否为字母;
    int i=0,j=strlen(S)-1;//双指针,一个头一个尾;
    if(j<=0)return S;
    while(i<=j){
        if(isalpha(S[i])&&isalpha(S[j])){//双指针所指向都是字母;
            char temp=S[i];
            S[i++]=S[j];
            S[j–]=temp;
        }//交换,并且指针同时移动;
        //其他留在原地就好了;
        if(!isalpha(S[i])){
            i++;
        }//移动前指针;
        if(!isalpha(S[j])){
            j–;
        }
    }
    return S;
}
宏定义和函数:
不同。虽然功能近似,但bai函数会产生独立代码,每du次调用执行的zhi是同一个位置的代码,无论调用多少次dao。宏定义是简单的文本替换,产生的代码是替换后程序产生的代码,简单说就是程序里每次使用宏替换后的地方都要产生类似的代码,而这些替换后产生的代码存在于程序的不同位置。宏定义不检查参数类型,仅仅是简单的文本替换