H面试程序(4):翻转句子中单词的顺序 .

Ubuntu Server 24.04 安装 (超详细) 本文介绍最小化安装 Ubuntu Server的详细过程。 阅读详情

 

题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。
句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。
例如输入“I am a student.”,则输出“student. a am I”。

 

#include<stdio.h>
#include<assert.h>
//45min
void swap(char *a, char *b)
{
	assert(a);
	assert(b);
	char temp;
	temp = *a;
	*a = *b;
	*b = temp;
}

void reverse(char * str,int  start,int end)
{   
	assert(str);

	int j = (end-start)/2;

	for(int i =0; i<=j; i++)
		swap(&(str[start++]), &(str[end--]));
}

void ReverceSentence(char * Str)
{
	  assert(Str);
	  int i = 0;
	  while(Str[i] !='\0')
	  {
		  i++;
	  }
	  int strlen = i; //得到字符串的长度

	  //整个字符串进行翻转
	  reverse(Str,0,strlen-1);

	  //每个单词进行翻转

	  int j ;
	  for(j = 0; j < strlen-1; j++)  //最后一个那个'\0'不用管它
	  {
           int start = j;//每个单词的起始位置
		   int end = j;  //每个单词介绍的位置,初始化为j(新单词起始的位置)
		   while(Str[j] != ' '&&Str[j] != '\0' )  //遇到空格或结束符的时候退出,否则继续判断
		   {
			   end++;  
			   j++;
		   }		  	   
		   reverse(Str,start, end-1);  //对单个字符进行翻转	  
	  }       
}

int main()
{
    char sentence[]="I am a student!";  
    ReverceSentence(sentence); 
	printf("%s",sentence);
	printf("\n");
	return 0;
}


 

 

网上参考答案

#include <iostream>
using namespace std;

void Reverse(char *start,char *end) //翻转字符串
{
     if(start==NULL||end==NULL)
        return;
    
     char temp;
     while(start<end)
     {
            temp=*start;
            *start=*end;
            *end=temp;
            start++;
            end--;        
     }
}

char *ReverceSentence(char *pstr)
{
    if(pstr==NULL)
       return NULL;
    
     //先将整个句子翻转
     char *start=pstr;
     char *end=pstr+strlen(pstr)-1;
     Reverse(start,end);
    
     start=pstr;
     end=pstr;
    
     //取出一个个单词,翻转之
     while(*start!='\0')
     {
       if(*start==' ')   //单词起始至非空格字符
          {
            start++;
            end++;
            continue;       
          }
       else if(*end==' '||*end=='\0')    //结束至空格或结束符前一个字符
       {
            Reverse(start,--end);
            start=++end;
       } 
       else
         end++; 
     }
     return pstr;
}
int main()
{
      char sentence[]="I am a student!";
      char *reverced=ReverceSentence(sentence);
      cout<<reverced<<endl;
      system("pause");
      return 0;
}


 

 

/*把给定的字符串的begin到end之间的部分翻转*/
void _reverse(char *str, int begin, int end)
{
 int i = 0;
 while(i <= (end - begin) / 2)
 {
  swap(str[begin + i], str[end - i]);
  ++i;
 }
}


 

基于ART算法和SIRT算法的超声CT反演及MATLAB代码实现 在超声CT中,反演算法起着至关重要的作用,它通过从测量数据中恢复出目标物体的内部结构。本文将介绍基于ART算法(Algebraic Reconstruction Technique)和SIRT算法(Simultaneous Iterative Reconstruction Technique)的超声CT反演方法,并提供相应的MATLAB代码实现。本文介绍了基于ART算法和SIRT算法的超声CT反演方法,并提供了相应的MATLAB代码示例。基于ART算法和SIRT算法的超声CT反演及MATLAB代码实现。 阅读详情

相关推荐

智能变电站协议系列-1、GOOSE、SV、MMS协议简介及GOOSE示例运行问题(IEC61850)

目前有一个新的研究,关于电网使用的GOOSE、SV、MMS协议,并使用相关库来做一下测试。由于goose、sv、mms等都属于IEC61850,因此,需要对IEC61850相关内容有一些了解,都是国际标准,属于电气自动化的一部分,对于自动化或者电气相关领域有接触的专业应该或多或少有一些了解。IEC61850目标是用于变电站自动化、分布式能源、水力和天然气发电厂、风力发电厂、电动汽车作为分布式能源等领域,目前似乎在变电站自动化方面的推广和使用更加广泛。

逍遥游的博客 2万+

151. 翻转字符串里的单词

输入: " hello world! " 输出:"world! hello" 解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。 示例 3: 输入: "a good example" 输出:"example good a" 解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。 说明: 无空格字符构成一个单词。 输入字符串可以在...

月雲之霄的博客 249

SceneSplat

目标:训练一个网络,输入高斯参数 → 输出与自然语言空间对齐的特征。考虑到标注语义的 3DGS 数据有限,作者设计了。策略,让模型在无标签场景上学到有用表征。都有一个与自然语言对齐的语义特征。这是整个方法的第一步,目标是让。

weixin_61091146的博客 1285

leetcode151.翻转字符串里的单词

题目大意 给定一个字符串,逐个翻转字符串中的每个单词。 输入: "a good example" 输出: "example good a" 解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。 解题思路 方法一: 首先用双指针的方式确定每个单词的始末位置,然后将这个子串放入数组中。最后将数组中的单词反向串联即可。 class Solution { public: ...

大腿壮的博客 208

GPU微架构演进分析--从SIMT到Scalar-Vector-Tensor计算的混合配比与调度

GPU架构经历了从专用计算模块到统一可编程处理器的演进。传统GPU面临专用电路配比难题,Nvidia Tesla架构通过引入可编程多线程处理器实现图形与计算的统一。Fermi架构进一步向计算倾斜,随后的架构陆续加入Tensor Core等专用单元。AI时代促成了从图形处理主导向AI计算的转变,形成了Scalar+Vector+Tensor的混合计算范式。SIMT调度重要性降低,CUDA面临新挑战,RISC-V等架构可能带来新机遇。

ChipCamp的博客---https://chipcamp.blog.youkuaiyun.com/ 917

基于PyTorch的BP神经网络PID控制器动态调参实战

本文详细介绍了基于PyTorch的BP神经网络PID控制器动态调参实战,结合BP神经网络的自适应能力和PID控制算法的经典优势,实现工业控制中的高效参数调整。通过PyTorch实现BP-PID融合架构,包括网络设计、损失函数优化及动态调参技巧,显著提升控制性能,适用于温度控制、电机控制等场景。

weixin_29094775的博客 523

单词翻转(4种思路,C/C++代码)

单词翻转

那年聪聪 2万+

【Java基础】还看不懂JDK7 HashMap环的产生原理你来打我

JDK7对旧table数据重定位到新table的函数transfer如下,其中重点关注部分以标出。 头插法正常情况下: 并发情况下 线程1只执行了Entry<K,V> next = e.next就被挂起了,而线程2正常执行完毕,结果图如下: 线程1接着下面继续执行: 通过逐步分析跟绘图可以知道红色部分会有环产生。 ...

sowhat 4244

给定一个字符串,逐个翻转字符串中的每个单词(来自leetCode)。

示例:   输入:"the sky is blue", 输出: "blue is sky the". 说明: 无空格字符构成一个单词。 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。 public String reverseWords(String s) { StringB...

hou_linlin的博客 5835

Redhawk: 为什么STA CHECK中switch cell覆盖率为0(STA file中switch control pin没有timing window)?

如题,做dynamic analysis时,不需要switch cell的timing window信息,但是做low power analysis需要做上电时switch cell的timing window就是必须的了,本文对switch cell control pin没有timing window (STA CHECK覆盖率为零)的这种现象做分析。

m0_61544122的博客 1197

python批量调用大模型API:多线程和异步协程

本文介绍了利用多线程技术批量调用大模型API的实现方法。核心是通过并发请求提高处理效率,主要采用线程池管理并发数量、结果聚合等技术。文章提供了一个完整的Python实现示例,包含APIBatchCaller类及其single_api_call和batch_call方法,详细解析了并发控制、错误处理等关键点,并给出了使用注意事项,包括并发数设置、重试策略和超时处理等。该方案特别适合IO密集型任务,能显著提升批量API调用的效率。

Cachel Wood的博客 760

python输入一个英文句子、翻转句子中单词的顺序_H面试程序(4):翻转句子中单词的顺序 ....

题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如输入“I am a student.”,则输出“student. a am I”。#include#include//45minvoid swap(char *a, char *b){assert(a);assert(b);char temp;temp = *a...

weixin_39752157的博客 1477

Close-By Site Assignment,门店近邻关系在 SAP Retail 物料搜索里的真实价值

SAP零售模块中的"Close-By Site Assignment"功能常被低估,但它在门店现场业务中极为关键。该功能允许预先定义各门店间的近邻关系,当导购或店长查询商品时,系统会自动展示附近门店的库存、价格和促销信息。与单纯的地理距离不同,这种近邻关系可基于调拨频率、业务关联度等业务逻辑定义。维护入口在事务码WSD_CBP中,支持按应用场景(如销售、采购)分别设置不同近邻关系。该功能不同于组织结构,专注于增强搜索体验,特别适合多门店运营场景,能有效提升跨店查询效率。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 4853

程序员面试100题(算法)之翻转句子中单词的顺序

方法一: // 程序员面试100题(算法)之翻转句子中单词的顺序 #include "stdafx.h" #include using namespace std; void reverse(char* begin, char* end) { if ((begin == NULL) || (end == NULL)) return ; c

shichexixi的专栏 4460

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。...

例如输入“I am a student.”,则输出“student. a am I”。 分析:由于编写字符串相关代码能够反映程序员的编程能力和编程习惯,与字符串相关的问题一直是程序员笔试、面试题的热门题目。本题也曾多次受到包括微软在内的大量公司的青睐。 由于本题需要翻转句子,我们先颠倒句子中的所有字符。这时,不但翻转了句子中单词的顺序,而且单词内字符也被翻转了。我们再颠倒每个单词内的...

Andy_chen1990的博客 1865

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

面试题38:翻转句子中单词的顺序,单词内字符的顺序不变

题目:给出一个英文句子,翻转句子中单词的顺序,单词内字符的顺序不变。 例如:"I am a student."输出"student. a am I" 思路:先翻转整个句子,然后翻转单词

3348

每天学习一算法系列(10)(输入一句英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变,句子中单词以空格符隔开)

题目:输入一句英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变,句子中单词以空格符隔开。 为简单起见,标点符号和普通字母一样处理。 例如:输入“I am a boy.”,则输出“boy. a am I”。   题目来源于:http://topic.csdn.net/u/20101011/16/2befbfd9-f3e4-41c5-bb31-814e9615832e.html

yuucyf的专栏 4826

python输入一个英文句子、翻转句子中单词的顺序_C 实现英语句子翻转 单词字母顺序不变(i love you -----> you love i)...

整理下心情,在一家公司呆的够久,基础知识遗忘的太久,今天去面试遇到标题中的题目,竟然有点手忙脚乱,真的是不应该啊。看来基础知识,还是要常常的翻新翻新。多的不说开始解析。首先提供解题思路:先将整个句子完全翻转,然后以空格为分割符,逐个单词翻转。第一步输出结果:uoy evol i第二步输出结果: you evol i....最终结果:you love i代码:void Reveris(char ...

weixin_39938269的博客 1607

一个面试题:翻转句子中单词的顺序

题目要求: 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。(注意处理在输入字符串时的回车字符) 输入:需反转的字符串 输出:按照要求反转后的字符串 示例:例如输入“I am a student.”,则输出“student. a am I” 自己写的代码如下:仅供参考,如有错误和不妥之处,请大家指正。

技术洞见 2127

翻转句子中单词的顺序

题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。 例如输入“I am a student.”,则输出“student. a am I”。 分析:由于编写字符串相关代码能够反映程序员的编程能力和编程习惯,与字符串相关的问题一直是程序员笔试、面试题的热门题目。本题也曾多次受到包括微软在内的大量公司的青睐。 由于

tianmo2010的专栏 1451

java翻转单词语句顺序_面试题 58.1:翻转单词顺序列

题目描述牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?思路先把句子中的所有字符进行...

weixin_30592681的博客 266

校招算法笔面试 | 翻转单词序列

牛客题库题解

wc529065的博客 962

程序员面试题精选100题(07)-翻转句子中单词的顺序

<br />  这题如果用标准库Vector来做,或者用栈来做的话,代码没几行,但是不用这些的话,自己写还是需要考虑一下的,特别是像对于我这种在语法上还是不怎么熟悉的同学。<br />  // 翻转句子中单词的顺序.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include<iostream> #include<string> #include<vector> using n

lhcxx1987的专栏 553

[开心IT面试题] 翻转句子中单词的顺序

//将字符串中从left到right的子字符串反转 char *ReverseString(char *string, int left, int right) { if((string == NULL) || (left == right)) { return string; } char ch; int i = left;//标记要反转的

979

面试100题:10.翻转句子中单词的顺序

转载并参考July的博客http://topic.csdn.net/u/20101126/10/b4f12a00-6280-492f-b785-cb6835a63dc9.html,万分感谢! 题目: 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如输入“Iam a student.”,则输出“student

加油,码农! 519

C 实现英语句子翻转 单词字母顺序不变(i love you -----> you love i)

整理下心情,在一家公司呆的够久,基础知识遗忘的太久,今天去面试遇到标题中的题目,竟然有点手忙脚乱,真的是不应该啊。看来基础知识,还是要常常的翻新翻新。多的不说开始解析。 首先提供解题思路:先将整个句子完全翻转,然后以空格为分割符,逐个单词翻转。 第一步输出结果: uoy evol i 第二步输出结果: you evol i .... 最终结果: you love

Tim_大叔的博客 1932

剑指Offer 面试题58 - I. 翻转单词顺序(Java代码)

使用栈;或者使用双指针(推荐)

r'q'x't 的博客 310
上一篇: H面试程序3:去除字符串中多余的空格
下一篇: H面试程序(7):去掉字符串中重复的数
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值