|
楼主 |
发表于 2019-6-19 09:35:50
|
显示全部楼层
- /*
- * 方法1:双指针(数组索引)
- */
- bool isLetter(char ch)
- {
- bool ret_val = false;
- if( ((ch>='a')&&(ch<='z'))
- ||((ch>='A')&&(ch<='Z'))
- )
- {
- ret_val = true;
- }
-
- return ret_val;
- }
- char* reverseOnlyLetters(char * S)
- {
-
- int str_len = strlen(S);
-
- int head = 0;
- int tail = str_len -1;
- char temp = 0;
- bool ret_val1 = false;
- bool ret_val2 = false;
-
- while(head < tail)
- {
-
- ret_val1 = isLetter(S[head]);
- ret_val2 = isLetter(S[tail]);
-
- if( ret_val1&& ret_val2 )
- {
- temp = S[head];
- S[head] = S[tail];
- S[tail] = temp;
- head++;
- tail--;
- continue;
- }
-
- if(!ret_val1)
- {
- head++;
- }
-
- if(!ret_val2)
- {
- tail--;
- }
- }
- return S;
- }
复制代码
- /*
- 方法1:
- 执行用时 :4 ms, 在所有 C 提交中击败了94.83%的用户
- 内存消耗 :6.8 MB, 在所有 C 提交中击败了75.00%的用户
- */
复制代码
|
|