之前字符串反转的题目

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

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

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

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,一经查实,立即删除!

相关文章

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…

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

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

递归是会更秀strtok

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

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;所以我们对之前的一 些计算机的发展史有个一定的了解&…

这样理解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…

为什么我对流程情有独钟?

写这个标题的原因是我有一个同事兼朋友&#xff0c;他的名字刚好和流程谐音&#xff0c;最近他刚离职回苏州工作&#xff0c;在球场下&#xff0c;他是我的良师益友&#xff0c;在球场上&#xff0c;他是我们可以信任的队友&#xff0c;我们不仅一次把比我们高大、速度比我们快…

基于boost asio实现的支持ssl的通用socket框架

情景分析现已存在一个可用稳定的异步客户端类http_client_base&#xff0c;该类基于boost asio实现了连接服务器&#xff0c;发送请求&#xff0c;获取响应和解析http数据等操作&#xff0c;该类的大致实现框架如下1classhttp_client_base 2{ 3public: 4 http_client_ba…

C#创建简单的验证码

首先&#xff0c;创建一个CLASS类&#xff0c;然后需要add Reference的方式添加 System.Drawing&#xff08;画画的类&#xff09; 方法代码如下&#xff1a; 1/**//**//**//// <summary> 2 /// 定义显示的随机字符 3 /// </summary> 4 /// &…

昨天的事情想说一下

发那篇文章的目的昨天发文章之后&#xff0c;我的一个好朋友微信找我&#xff0c;跟我说了很多关于文章的事情&#xff0c;所以&#xff0c;我自己也思考了许多。关于泄愤这个事情&#xff0c;我还是挺想说的。可能很多人看到了一个不好的东西&#xff0c;然后网上发发这个&…

Multidimensional Queries(二进制枚举+线段树+Educational Codeforces Round 56 (Rated for Div. 2))...

题目链接&#xff1a; https://codeforces.com/contest/1093/problem/G 题目&#xff1a; 题意&#xff1a; 在k维空间中有n个点&#xff0c;每次给你两种操作&#xff0c;一种是将某一个点的坐标改为另一个坐标&#xff0c;一种操作是查询[l,r]中曼哈顿距离最大的两个点的最大…

poj 3342

概率dp&#xff0c;不解释。 View Code #include<iostream>#include<map>#include<cstdio>#include<vector>using namespace std;const int maxn201;int dp[210][2];vector<int>edge[maxn];void dfs(int u,int p){int i,j; dp[u][1]1;dp[u][…

最全是一次I2C总结

博主将 I2C spec 文章总结为一篇&#xff0c;目录如下I2C Introduction I2C Architecture I2C Transfer I2C Synchronization And Arbitration I2C Hs-mode1、I2C Introduction1、I2C 历史I2C&#xff1a;Inter-Integrated Circuit&#xff0c;集成电路总线。I2C 是 Philips 公…

Lync Server 2010标准版系列PART6:启用Lync

在我们花费了众多的精力和时间之后&#xff0c;我们终于完成了Lync Server标准版的搭建&#xff0c;接下来当然是为我们AD中的用户启用Lync&#xff0c;来看下我们的部署成果。首先我们需要在AD中创建两个帐户&#xff0c;这样便于我们后期的测试&#xff0c;在DC上打开AD用户和…

8位MCU跑RTOS有没有意义?

相信大多数人在学习单片机的时候&#xff0c;都是从最基本的8位MCU开始的。一般来说&#xff0c;8位单片机最常见的是三个系列是&#xff1a;51系列、AVR系列、PIC系列。而前段时间&#xff0c;群里讨论了一个问题&#xff1a;在51单片机上跑RTOS有没有意义&#xff1f;关于这个…

ViewState机制由浅入深1

1 ViewState机制是什么&#xff1f; ViewState机制是asp.net中对同一个Page的多次请求&#xff08;PostBack&#xff09;之间维持Page及控件状态的一种机制。在WebForm中每次请求完&#xff0c;Page对象都会被释放&#xff0c;对同一个Page的多次请求之间的状态信息&am…

关于bc中小数点length,scale,(())以及进制转换

这是我在codewar上遇到的一个题&#xff0c;我用我自己的方法做出了解答&#xff0c;如下&#xff1a; 1 #!/bin/bash2 3 distanceecho "$1*10000"|bc|cut -d"." -f14 a05 n16 7 if [ $distance -le 0 ];then8 echo None9 else 10 while [ $n -lt $di…

5V串口接3.3V单片机串口怎么搞?

写在前面&#xff1a;两个单片机由于电平不同&#xff0c;串口通信可能会失败&#xff0c;这时候需要通过电平转换电路来解决&#xff0c;本文给出了两种方法&#xff0c;一种是通过三极管搭建&#xff0c;另一种是MOS管搭建&#xff0c;在硬件工程师的笔试中也经常会出现这样的…