将字符串以单词为单位逆序"I am a Student" 解法

2023-05-16

网上有个题目,将字符串以单词为单位逆序,例如:"I am a Student" 要变成"Student a am I"

解法大致为:先将字符串整体逆序第一个字符和最后一个交换,第二个与倒数第二个交换,一直到完成整个串逆序,

即”tnedutS a ma I“;然后单个单词逆序。

下面是我的解法,对于字符串中间隔多个空格和末尾多个空格都可以正常处理。

#include <stdio.h>
#include <string>
using namespace std;

int main(int argc, char * argv[]) {
 
 char s[]="I am   a Student";
 
 int len=0,i;
 while(*(s+len) != '\0')
  len++;
 printf("len=%d\n",len);
 
 //逆转整个字符串 即s[i]与s[len-i-1]互换
 for(i=0;i<len/2;i++) {
  int t=s[i];
  s[i]=s[len-i-1];
  s[len-i-1]=t;
 }
 printf("reserve whole string=[%s]\n",s);
  
 int p = 0;  //记录总体移动长度
 int ilen = 0; //单个word的长度
 while(p != len) {
  ilen = 0;
  while(*(s+p+ilen) != ' ' && *(s+p+ilen) != '\0' )
   ilen++;
  
  for(i=0;i<ilen/2;i++) {
   int t = s[p+i];
   s[p+i]=s[p+ilen-i-1];
   s[p+ilen-i-1]=t;
  }
  p+=ilen;
  
  //p移动到下个单词位置
  while( *(s+p) == ' ')
   p++;
  
 }
 printf("result string=[%s]\n",s);
 return 0;
}

编译运行结果:

[@cubjdev1 myfile]$ g++ string_test.cpp -o string_test

[@cubjdev1 myfile]$ ./string_test

len=16

reserve whole string=[tnedutS a   ma I]

result string=[Student a   am I]


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将字符串以单词为单位逆序"I am a Student" 解法 的相关文章

  • 电网中DTU FTU RTU TTU的区别

    FTU xff08 Feeder Terminal Unit xff09 xff1a 馈线开关监控终端是装设在10KV断路器 负荷开关的开关监控装置 主要作用是采集各开关所在线路的电气参数 xff0c 并将这些信息向上级系统传输 xff1b
  • 他山之石可以攻玉

    计算之外的喜欢这一栏创建很久了 xff0c 但是一直没有内容 xff0c 目前勉强能够记录的大概就是我这一年里 xff08 2021 2022 xff09 读的书吧 人的一生很短暂 xff0c 也很宝贵 xff0c 能够在太平时节经历喜怒哀
  • 关于天干地支及其计算

    以天干地支计算日期是我国悠良的传统文化 xff0c 最近在看如何计算人的生辰八字 xff0c 写了个程序 xff0c 但是只能算年的干支 xff0c 月 日的干支计算方法太复杂了 xff0c 望之只能却步 xff0c 还是乖乖去查万年历比较
  • petalinux配置的系统启动出现cannot set terminal process group (-1): Inappropriate ioctl for device的问题解决小记

    配置好的系统在启动的时候出现cannot set terminal process group 1 Inappropriate ioctl for device 随后无法正常启动系统 经过判断后觉得是vivado生成的文件导入到petali
  • VL53L1X移植到STM32实战记录,使用软件IIC(附源代码)

    序言 VL53L1X是一个很小又很优秀的测距传感器 xff0c 它相比于上一代VL53L0X有着不小的提升 xff0c 这次毕业设计打算将这个传感器用起来 xff0c 就来移植了一下 xff0c 遇到的坑怎么说还是有一些 xff0c 故在此
  • 使用ZeroTier搭建虚拟局域网,完成虚拟局域网内直连

    此文章涉及 xff1a Zerotier速度慢的解决办法 Zerotier实际应用展示 Zerotier简单实用教程 技术背景 在经过接近一个学期的互联网安全的学习 xff0c 我接触到了网络的很多种攻击 xff0c 渗透与防守的方式 从这
  • vitis HLS 在进行C simulation时遇到工程csim/build/csim.exe not found 报错的问题排查

    在进行HLS设计学习时 xff0c 想对写好的东西进行C代码模拟 xff0c 但最后提示存在错误 xff0c 如下 xff1a 查看错误信息的话 xff0c 只有抽象的ERROR SIM 211 100 CSim file generati
  • ubuntu20.04 下使用cgroup 限制内存

    本实践的主要操作请参照 参考链接 进行 由于在实践中主要想完成的目标是限制服务器中用户 用户组的内存使用 xff0c 防止某个用户占用过多的cpu 内存导致其他用户无法正常使用甚至服务器宕机 xff0c 因此需要手动加cgexec指令的实验
  • 通过github action完成自动多平台编译和docker推送

    简介 因为一个小项目 xff0c 之前一直是手动制作镜像 xff0c 现在需要用docker部署 xff0c 然后还要基于arm64编译 xff0c 想着不如实践一下 xff0c 学习一下github action和Dockerfile的编
  • 让你的 STM32Cube KEILV5 + HAL库工程支持C++开发

    前言 最近这段时间在弄一个新的STM32F4的项目 xff0c 因为工程比较庞大 xff0c 然后各种类型也比较复杂 xff0c 在封装整理的时候就非常头疼 xff0c 很想通过C 43 43 的类 xff0c 继承 xff0c 多态的方式
  • ESP8266 TCP ERROR CLOSED的常见原因及解决办法

    前言 最近在使用ESP8266的简单AT指令做串口透传 xff0c 本来想着和HC 05的蓝牙串口差不多简单吧 xff0c xff0c 结果发现ESP8266似乎并没有像HC 05那么易用 xff0c 需要配置的东西还挺多的 xff0c 而
  • (二)TCP客户端/服务器通信------select函数

    xff08 一 xff09 select函数 该函数允许进程指示内核等待多个事件中的任何一个发生 xff0c 并只在有一个或多个事件发生或经历一段指定的时间后才唤醒它 也就是说 xff0c 我们调用select告知内核对哪些描述符 xff0
  • QGC参数请求流程(第一集)

    xff31 xff27 xff23 参数请求流程 xff08 第一集 xff09 联系作者 QQ 843230304 如流程图所示 xff1a 对应 xff31 xff27 xff23 的ParameterManager模块 xff0c 这
  • 航模螺旋桨型号

    1 有两个重要的参数 xff0c 桨直径和桨螺距 xff0c 单位均为英寸 比如8060桨 xff0c 就是说这个桨直径是8英寸 即8 2 54 xff1d 20 32厘米 螺距则为6英寸 螺距则代表桨旋转一周前进的距离
  • 用Java代码实现选择排序法

    package com hu controller public class Test public static void main String args 声明一个整形的数组 并手动输入几个数 int arr 61 11 665 985
  • C语言递归的方法实现斐波那契

    int fib int n void main int n 61 10 int result 61 fib n printf 34 d 34 result int fib int n if n gt 61 3 原题目这里是if n gt 6
  • 支持ie7,ie8,ff,不完全支持ie6的js日期控件

    var MonthDNum 61 new Array 0 31 28 31 30 31 30 31 31 30 31 30 31 var MonthText 61 new Array 34 34 34 一月 34 34 二月 34 34 三
  • oracle主键生成方式

    oracle主键 两种方法 自增主键sequence SYS GUID 生成唯一序列 一 自增主键 创建一个表 create table test NID int PRIMARY KEY oracle主键 两种方法 自增主键sequence
  • Vmware vSphere(一)安装vSphere client 以及 ubuntu

    大致流程见附件 VMware Tools 安装 xff0c 使用 xff0c 命令 xff1a vmware toolbox http blog csdn net dzassn article details 1633577 vmware
  • syslog 协议及格式

    官方文档 xff1a http tools ietf org html rfc5424 6 Syslog Message Format 6 2 HEADER 6 2 1 PRI PRI 61 lt Facility 0 23 8 43 Se

随机推荐

  • chm打不开

    chm文件打开看不到右边的内容 1 操作系统为了安全对下载的chm文件进行了锁定 xff0c 只需要在打开前右键单击该chm文件选择 属性 xff0c 然后在 常规 选项卡的下方单击 解除锁定 按钮就可以了 2 如果还是不能看 xff0c
  • 形式语言与自动机笔记

  • 关于Keil开发C51单片机的头文件问题

    我用的德飞莱的资料 在学习STM32中回想起学C51单片机时 xff0c 有个问题一直没解决 xff0c 就是头文件regx52 h和reg52 h的区别 因为在引用regx52 h时 xff0c 可以直接用P1 1 P3 2这些小口 但是
  • JAXB(二)Map属性映射

    JAXB support Collection List Set does not support Map not Collection XmlAdapter lt ValueType BoundType gt use List to im
  • JAXB(三)xsd 验证

    现在只有最简单的关联映射验证 关键点 xff1a jaxbMarshaller setSchema sch 还不会验证集合类型 xff1a List Set Map 以后再把JAXB xff08 二 xff09 的例子加上 xff0c 64
  • jstat

    http blog csdn net swpihchj article details 8197204
  • Effctive Java 笔记

    8 重写equals xff0c 只适合值类 xff08 枚举类除外 xff09 自反性 xff1a x equals x 61 61 true 对称性 x equals y 61 61 true 必然 y equals x 61 61 t
  • maven

    http blog csdn net zjf280441589 article details 53044308 http www infoq com maven Porject groupId 43 artifactId 43 versi
  • Linux第二课:Ubuntu 操作入门(内含:1Ubuntu 下打开终端+2 Linux 文件属性+3 设置屏幕+4 系统关机与重启+5.文件浏览器)

    Ubuntu 操作入门 2 2 1Ubuntu 下打开终端 方法1 点击 Ubuntu 桌面左上角图标进入搜索框 xff0c 输入 term 可以弹出终端 Terminal 程序 方法2 xff1a 桌面或者在文件浏览器的任何目录下右键鼠标
  • 堆中存什么?栈中存什么?

    堆中存的是对象 栈中存的是基本数据类型 和堆中对象的引用 一个对象的大小是不可估计的 xff0c 或者说是可以动态变化的 xff0c 但是在栈中 xff0c 一个对象只对应了一个4btye的引用 xff08 堆栈分离的好处 xff1a xf
  • 计算一个数的N次方

    计算一个数的N次方时 xff0c 我们先设定两个参数n和k xff0c n表示你要输入的数 xff0c k表示这个数的次方 这个时候我们必须对次方数k作出分类 xff1a k 61 0 return 1 其他 xff1a return n
  • 用结构体编写电话通讯录

    用结构体数组编写电话通讯录 xff0c 必须得知道结构体的形式 xff0c 那先把结构体定义回顾一下 xff1a 一般形式为 xff1a xff08 1 xff09 struct 结构体名称 成员表列 数组名 数组长度 如 xff1a st
  • linux(centos)下安装git并上传代码些许步骤(亲自验证过的步骤)

    以前听说了好多次github xff0c 但直到最近才第一次学习使用github来托管自己在linux下的代码 xff01 说实话 xff0c 我自己在使用的时候从网上查了好多教程 xff0c 但总觉得难以掌握 xff08 步骤过于繁琐 x
  • shell具体执行过程及自主实现shell解释器

    在编写shell 解释器之前 xff0c 先来分析几个知识点 xff1a xff08 1 xff09 shell 执行命令时步骤 xff1a xff08 如下图 xff09 xff08 2 xff09 shell 执行脚本时的步骤 xff1
  • Linux下的桥接模式和Nat模式的区别

    先来看一下linux在的桥接模式和Nat模式的差别 xff1a 桥接模式 xff1a Nat模式 xff1a 真正的接触这个问题是因为同学要给我远程传输文件 xff0c 这个时候就调节至桥接模式下 xff0c 进行ping 尽管我们用的是同
  • C知识点整合

    C语言总结 一 语法 1 常见的数据内置类型所占字节 xff08 64 位下 xff09 xff1a char 1 int 4 float 4 long 4 double 8 Longlong 8 2 变量 xff1a xff08 1 xf
  • 判断一棵二叉树是否为完全二叉树

    1 完全二叉树的特点 xff08 来自专业定义 xff09 看到上面完全二叉树的特点 xff0c 我可以将其特点按照自己的 理解归纳为以下几点 xff1a xff08 1 xff1a 若二叉树最下面一层有节点出现 xff0c 那么这个节点一
  • 深入理解JNI技术

    一 JNI是什么 xff1f JNI是Java Native Interface的缩写 xff0c 译为Java本地调用 JNI是一种技术 二 JNI技术的用途 xff1f Java程序中的函数调用Native程序中的函数 Native一般
  • HTTP基本认证(Basic Authentication)

    在浏览网页时候 xff0c 浏览器会弹出一个登录验证的对话框 xff0c 如下图 xff0c 这就是使用HTTP基本认证 1 客户端发送http request 给服务器 服务器验证该用户是否已经登录验证过了 xff0c 如果没有的话 xf
  • 将字符串以单词为单位逆序"I am a Student" 解法

    网上有个题目 xff0c 将字符串以单词为单位逆序 例如 34 I am a Student 34 要变成 34 Student a am I 34 解法大致为 xff1a 先将字符串整体逆序第一个字符和最后一个交换 xff0c 第二个与倒