给定一个字符串s,按规则反转字符串:
1.所有非英文字母保留在原地
2.所有英文字母位置反转
例如:
输入:s = "a-bcd!ef"
输出: s = "f-edc!ba"
思路:两个指针left,right分别指向字符串的头部和尾部,分别检验是否位英文字母,若s[left]不是英文字母,则left++,若s[right]不是英文字母,则right--,分别跳过,若两者都是英文字母,则进行位置交换
char * reverseOnlyLetters(char * s){
int right=strlen(s)-1;
int left=0;
while(left<right){
if((s[left]<'A')||((s[left]>=91)&&(s[left]<=96))) left++; //s[left]不是英文字母
else if((s[right]<'A')||((s[right]>=91)&&(s[right]<=96))) right--; //s[right]不是英文字母
else{ //s[left]和s[right]都是英文字母
char c=s[left];
s[left]=s[right];
s[right]=c;
left++;
right--;
}
}
return s;
}