之前字符串反转的题目

之前发的字符串反转的题目

这道字符串反转的题目,你能想到更好的方法吗?

有很多人评论了,有的人还写了自己的解题思路,还有人写了自己的代码

4b2abc9b926607bc2372aa041e41af91.png

还有其中呼声很高的压栈解法

645d702bda1710e6f234e98b0f7494ae.png

我相信很多人在笔试的时候一定会遇到这类题目,给你一个字符串,让你找到一些规律,或者是找到某个字符串,或者是字符大小写转换等等。

我们先看一下,如果我们用栈来完成这个代码要怎么写?

我上面贴的那个答案其实就是用到了栈的思想,队列的先进先出,栈的话就是先进后出。

栈,C语言实现

所以上面的代码

b197b46b67827f164d59c12175c2eaaa.png

就是以栈形式,最后的位置先出来。

如果我那份代码要用栈的形式呢?我写了一个粗糙的版本

#include "stdio.h"
#include "string.h"
#include "stdlib.h"char input[] = {"the sky is blue"};//题目://input  the sky is blue
//output blue is sky thevoid reverseWords(char* s, size_t n) {char *stack = (char*)malloc(n);memcpy(stack, s, n);for (int i=0; i<n; i++) {*(s + i) = *(stack + n -i -1); }if (stack) {free(stack);stack = NULL;}
}//eulb si yks ehtvoid reverseWords_by_space(char* s, int n) {int i = 0;int len = 0;for (i=0; i<n; i++) {if (s[i] == ' ') {reverseWords(s+i-len, len);len = 0;} else if (s[i] == '\0') {reverseWords(s+i-len, len);len = 0;   }else {++len;}}}int main(void) {printf("%s\n", input);reverseWords(input,strlen(input));reverseWords_by_space(input,sizeof(input));printf("%s\n", input);// 写完了,大家有不明白的评论下return 0;}

但是我觉得不是很好,因为里面用到了内存申请,做嵌入式的应该知道,内存对于我们来说是稀缺资源。

所以我还是觉得上面那个同学的写法非常给力

也有人回复说用异或来实现两个变量的交换,变量交换的方法很多,但是面试的时候有时候会记不住,所以我们会写最简单的方法,不过有些常见的方法大家可以试试。

#include "stdio.h"void swap4(int *a,int *b) {*a = (*a + *b) - (*b = *a);
}void swap3(int *a,int *b) {*a = (*a ^ *b) ^ (*b = *a);
}void swap2(int *a,int *b) {*a = *a + *b;*b = *a - *b;*a = *a - *b;
}void swap1(int *a,int *b) {*a = *a^*b;*b = *a^*b;*a = *a^*b;
}int main(void) {int a = 3,b = 4;printf("a=%d,b=%d\n",a,b);swap1(&a,&b);printf("a=%d,b=%d\n",a,b);swap2(&a,&b);printf("a=%d,b=%d\n",a,b);swap3(&a,&b);printf("a=%d,b=%d\n",a,b);swap4(&a,&b);printf("a=%d,b=%d\n",a,b);return 0;}
输出

aef11662e2cd47e3e93c37c3d9341954.png

晚上想再更新下代码
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
char input[] = {"the sky is blue cris 1212321 apple"};//题目://input  the sky is blue
//output blue is sky thevoid reverseWords(char* s, size_t n) {*(s+n-1) = '\0';printf("%s ",s);
}int main(void) {int size = sizeof(input);printf("%s\n",input);for (int i=0,n=0; i<=size; i++,n++) {if (*(input+size-i-1) == ' ' || i == size){reverseWords(input+size-i, n);n = 0;}}return 0;
}
大家如果还有更好的方法,欢迎继续留言。
如果有看到和这道题目变种的笔试题,也欢迎留言。

ccd25777eea40686de38b4c3a67ce495.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/463974.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ 多重继承之内存存储

C 之多重继承 1. C中class与struct。 在C里面&#xff0c;class与struct没有本质的区别&#xff0c;只是class的默认权限是private&#xff0c;而struct则是public。这个概念也揭示了一点&#xff1a;class和struct在内部存储结构上是一致的。所以我们可以利用这一点来探讨clas…

hdu 3488

可以作为KM 二分图最大权匹配模板 View Code #include <stdio.h>#include <iostream>#include <string.h>using namespace std;const int N210;const int inf0x2fffffff;const int Max20000;int match[N],n,m,lack,w[N][N],lx[N],ly[N];bool vx[N],vy[N];bo…

Find The Multiple POJ - 1426 (BFS)

题目大意 给定一个整数&#xff0c;寻找一个只有0,1构成的十进制数使得这个数能够整除这个整数 解法 直接bfs第一位放入1&#xff0c;之后每一位放入1或者0 代码 #include <iostream> #include <queue> using namespace std; int n; void bfs() {queue<long lon…

心情不好,我就这样写代码

在 GitHub 上有一个项目&#xff0c;它描述了「最佳垃圾代码」的十九条关键准则。从变量命名到注释编写&#xff0c;这些准则将指导你写出最亮眼的烂代码。为了保持与原 GitHub 项目一致的风格&#xff0c;下文没有进行转换。读者们可以以相反的角度来理解所有观点&#xff0c;…

C++中默认构造函数使用时的要点

最近写代码的时候发现一个奇怪的现象&#xff1a;当我声明一个无参构造函数时&#xff0c;如果后面加上括号&#xff0c;声明出的对象就不能显示。比如下面的代码&#xff1a; [cpp] view plaincopy #include <stdio.h> class Test { public: Test() { …

一个立即关闭显示器的小软件(Masm开发,只有3KB大小)

我们在用电脑听歌或者下载网络资源时&#xff0c;经常都是不需要开着显示器的&#xff0c;这样不仅可以省电&#xff0c;最重要的是可以延长显示器的使用寿命&#xff0c;当然&#xff0c;对于笔记本电脑的电池省电也是很重要的。另外&#xff0c;对于液晶显示器&#xff0c;由…

动态规划之91 decode ways

题目链接&#xff1a;https://leetcode-cn.com/problems/decode-ways/description/ 参考&#xff1a;https://www.jianshu.com/p/5a604070cd11 题目大意&#xff1a;将一串数字&#xff0c;编码成A-Z的字符串。因为12-->L&#xff0c;或者12-->AB。所有12转成字符串一共有…

SQL Server中的STUFF函数的使用

STUFF ( character_expression , start , length ,character_expression ) 参数 character_expression 一个字符数据表达式。character_expression 可以是常量、变量&#xff0c;也可以是字符列或二进制数据列。start 一个整数值&#xff0c;指定删除和插入的开始位置。如果 st…

递归是会更秀strtok

前几天发的字符串反转题目&#xff0c;后面有一个新同学用了递归的方法来实现&#xff0c;看了下&#xff0c;真的是很秀。之前字符串反转的题目代码如下#include "stdio.h" #include "string.h" char input[] {"the sky is blue cris 1212321 apple…

判断输入的IP地址是否合法

判断输入的IP地址是否合法&#xff0c;ip地址的值在0~255之间&#xff0c;先把输入的IP的地址转换为一个字符串。 #define LEN (sizeof(xx)/sizeof(xx[0])) const char *xx[] {"192.168.1.1", "10.0.0.1", "127.256.0.1", "iugerjiogjioe…

偶作无题词一首

偶作无题词一首 读史籍&#xff0c;捉摸当初元璋。谈兴衰&#xff0c;寻思后来泽东。展抱负&#xff0c;携智巧&#xff0c;弄权谋&#xff0c;兴武功&#xff0c;万邦惊诧。立业不立身&#xff0c;立言不立行&#xff0c;枭雄本色。搏四海&#xff0c;威肃九州&#xff0c;建基…

ios开发网络篇—HTTP协议 - 转

一.URL 1.基本介绍 URL的全称是Uniform Resource Locator(统一资源定位符) &#xff0c;通过1个URL&#xff0c;能找到互联网唯一的1个资源 &#xff0c;URL就是资源的地址&#xff0c;位置&#xff0c;互联网上的每个资源都有一个唯一的URL 2.URL中常见的协议 (1)HTTP&#…

总结的一些内存问题

前言之前在实习时&#xff0c;听了 OOM 的分享之后&#xff0c;就对 Linux 内核内存管理充满兴趣&#xff0c;但是这块知识非常庞大&#xff0c;没有一定积累&#xff0c;不敢写下&#xff0c;担心误人子弟&#xff0c;所以经过一个一段时间的积累&#xff0c;对内核内存有一定…

云计算-从基础到应用架构系列-云计算的演进

为什么80%的码农都做不了架构师&#xff1f;>>> 开篇 本篇是主要讲述云计算的发展历程&#xff0c;由于云计算本身提出来也不是太久&#xff0c;并且其实云计算也是经过前人的一些经验总结提出&#xff0c;所以我们对之前的一 些计算机的发展史有个一定的了解&…

Linux下的基本常用命令解析

1.查进程ps命令查找与进程相关的PID号&#xff1a;ps a 显示现行终端机下的所有程序&#xff0c;包括其他用户的程序。ps -A 显示所有程序。ps c 列出程序时&#xff0c;显示每个程序真正的指令名称&#xff0c;而不包含路径&#xff0c;参数或常驻服务的标示。ps -e 此参数的效…

常用数据库脚本

SqlServer&#xff1a;1、修改数据库排序规则&#xff0c;改成中文方式(如果是英文方式的话&#xff0c;直接写insert插入中文会有问题的&#xff0c;需要使用insert into Table_1 values(N中文)的方式)Alter database master COLLATE Chinese_PRC_CI_AS;修改之后对于这个库中的…

这样理解mmap,挺有意思!

大概雍正皇帝怎么也不会想到&#xff0c;自己在西历2022年的男生和女生眼里&#xff0c;会是截然不同的两种形象。1以我对身边同学朋友的观察&#xff0c;男生们大多爱看《雍正王朝》&#xff0c;他们眼中的雍正&#xff0c;大约是个推行了“火耗归公”、“摊丁入亩”等遏制贪腐…

软件开发中的11个系统思维定律

为什么80%的码农都做不了架构师&#xff1f;>>> http://sd.csdn.net/a/20101217/284119.html?1292550154 彼得圣吉在其著作《第五项修炼》中提到的系统思维定律同样适用于软件开发。 1. 今日的问题源于昨日的解决方案&#xff08;Today’s problems come from yes…

boost.asio防止恶意空连接的方法

转载&#xff1a;http://blog.csdn.net/educast/article/details/13167847 网络服务器通常要应对一些意外情况&#xff0c;如空连接行为&#xff0c;指在遇到客户端连接后不进行任何操作&#xff0c;并很可能在大量空连接情况下导致服务器资源耗尽而无法工作。以下代码主要工作…

赢在中国 (2008-3-19)

赢在中国又换在10点&#xff0c;前面几分钟没有看到。虽然我一直不看好32号老董&#xff0c;但是我还是很好奇看看他是怎么样让自己又一次成为众人的对立面的。 我觉得32号和04号都不是心胸宽广之辈&#xff0c;但至少04号比32号真诚&#xff0c;只是他还没有修炼到32号的厚厚的…