【面试题总结】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】:
题目:
(未完待续...)
转载于:https://www.cnblogs.com/xuelisheng/p/10987249.html
【面试题总结】2、反转字符串的几种形式相关推荐
- 在JavaScript中反转字符串的三种方法
This article is based on Free Code Camp Basic Algorithm Scripting "Reverse a String" 本文基于F ...
- 反转字符串java实现_反转字符串的几种实现(Java)
反转字符串的几种实现(Java) 首先第一种是利用Java中的类库对象进行反转 //第一种 使用Java类库的diam实现反转 public String reverse(String str){ S ...
- python3反转字符串的3种方法
前段时间看到letcode上的元音字母字符串反转的题目,今天来研究一下字符串反转的内容.主要有三种方法: 1.切片法(最简洁的一种) #切片法 def reverse1():s=input(" ...
- 反转字符串的四种方法
1.使用StringBuffer自带的方法实现 public String reverse1(String str) {if(str == null || str.length()<=1){re ...
- Python 中的反转字符串:reversed()、切片等
摘要:以相反的顺序反转和处理字符串可能是编程中的一项常见任务.Python 提供了一组工具和技术,可以帮助您快速有效地执行字符串反转. 本文分享自华为云社区<Python 中的反转字符串:rev ...
- java反转字符串的方法
1.首先我们定义一个方法,用来反转字符串.用 public static void (String)方法初始化一个对象,然后使用 private static ()方法对该对象进行初始化,并检查是否有 ...
- 在JavaScript中重复字符串的三种方法
In this article, I'll explain how to solve freeCodeCamp's "Repeat a string repeat a string" ...
- python面试题(4)--- 字符串首字母大小写 和 反转字符串 问题
1.修改字符串首字母的大小写 代码演示: s1 = 'hello' print(s1) print(s1.capitalize())#s1[0] = 'H' 只读的,会抛出异常s1 = s1[0:1] ...
- 字符串反转python 测试_Python中的反转字符串问题
按单词反转字符串是一道很常见的面试题.在Python中实现起来非常简单. def reverse_string_by_word(s): lst = s.split() # split by blank ...
最新文章
- 6月17 表单验证
- 目标检测(Object Detection)原理与实现
- 笔记-高项案例题-2016年下-计算题
- Android Studio相关资料链接
- 二进制状态压缩相关操作
- 这名程序员28岁就退休了。。。
- Nexus:一站式私有仓库管理(NuGet、Maven、npm、Docker)
- LNCS用户写作指南【 Springer Computer Science Proceedings 】
- Centos6.6部署Redis集群
- win10下的用交叉线实现文件共享
- 在线多空行只保留一个工具
- php post请求超时,php用curl提交post数据,本地测试服务器OK,线上超时,需要如何排除问题?...
- 步骤五 · 4-9 解决getElementsByClassName()兼容性 未解决
- 数学建模13种常见方法
- mysql execute stmt_mysql_stmt_execute()--MySql数据库
- 分享一下自己收集到的真实用户的UA
- linux终端下载速度只有几kb,[菜鸟教学]如何提高linux下的下载速度!新手必看!...
- 群同态和群同构的区别_抽象代数3-1群同态的简单性质与低阶群的结构
- 新买的笔记本电脑分区,笔记本分区分错了怎么重新分
- Technorati Blog Finder BETA
热门文章
- 计蒜之道2015程序设计大赛初赛第三场——腾讯手机地图
- python 之遍历目录树(可匹配输出特定后缀的文件)
- SQL server 2008 不允许保存更改,您所做的更改要求删除并重新创建以下表 的解决办法...
- NET框架下使用双缓冲技术绘图
- 【Java从0到架构师】Maven
- Manjaro_xfce 安装后配置
- FineReport层式报表解决大数据集展示问题攻略
- cass读取dat文件_CASS里DTM法土方计算
- matlab怎么复制相同的列,怎样将数组中某一列数据相同的行提取出来?
- pythondjango项目集成_Django集成celery实战小项目