面试题总结2反转字符串的几种形式
Posted xuelisheng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试题总结2反转字符串的几种形式相关的知识,希望对你有一定的参考价值。
反转字符串:
作为面试题出现频率最高的手写代码题,有必要做一下总结。
【形式1】:
题目:
/* 反转字符串-1: orgin = "where‘d you go?" dest = "?og uoy d‘erehw" */
分析:很容易的题目。解决方法有2种:可以递归输出、也可以“头尾”指针向中间移动,边移动变交换。
代码实现:(vs2017下测试通过)
1 #include<iostream> 2 using namespace std; 3 4 void reserve01(char *origin) 5 6 if (*origin == ‘\\0‘) 7 8 return; 9 10 else 11 12 reserve01(origin + 1); 13 cout << *origin ; 14 15 16 17 void reserve02(char origin[], int length) 18 19 char *head = origin; 20 char *tail = origin + length - 1; 21 while (head != tail) 22 23 char temp = *head; 24 *head = *tail; 25 *tail = temp; 26 head ++; 27 tail--; 28 29 30 31 int main() 32 33 char origin[] = "where‘d you go?"; 34 35 // 方法1:采用递归的方式直接输出 36 reserve01(origin); 37 cout << endl; 38 39 // 方法2:在origin上直接逆置 40 reserve02(origin, 15); 41 42 // 输出方法2的返回值 43 cout << origin << endl; 44 45 system("pause"); 46 return 0; 47
【形式2】:
题目:
/* 反转字符串-2: orgin = "where‘d you go?" dest = "d‘erehw uoy ?og" */
分析过程:如图所示,
代码实现:(vs2017下测试通过)
1 #include<iostream> 2 using namespace std; 3 4 void reserverOneWord(char *r, char *p) 5 6 while (r < p) 7 8 char temp = *r; 9 *r = *p; 10 *p = temp; 11 r++; 12 --p; 13 14 15 16 void reserverString(char *str) 17 18 char *p, *q, *r; 19 20 p = str; 21 while (*p == ‘ ‘) // 让 p r指向第一个非空格的字符,为了处理“ hello world”这种情况 22 ++p; 23 if (*p == ‘\\0‘) // 为了处理" "这种情况 24 return; 25 26 r = p; 27 q = p + 1; 28 29 while (*q != ‘\\0‘) 30 31 if ((*p >= ‘a‘ && *p <= ‘z‘) && (*q == ‘ ‘)) 32 33 reserverOneWord(r, p); // 反转 r到p这部分 34 35 while (*q == ‘ ‘) 36 ++q; 37 if (*q == ‘\\0‘) // 为了处理" hello world "这种情况 38 return; 39 r = q; 40 p = q; 41 q++; 42 43 else 44 45 ++q; 46 ++p; 47 48 49 reserverOneWord(r, p); // 此时q指向 \\0,需要反转r到p位置的字符串 50 51 52 int main() 53 54 // 测试用例 55 // char str[] = "where‘d go?"; 56 //char str[] = "hello world!"; 57 //char str[] = " hello world "; 58 char str[] = " "; 59 60 reserverString(str); 61 cout << str; 62 63 system("pause"); 64 return 0; 65
【形式3】:
题目:
(未完待续...)
以上是关于面试题总结2反转字符串的几种形式的主要内容,如果未能解决你的问题,请参考以下文章