当前位置: 首页 > news >正文

2015年北京大学软件project学科优秀大学生夏令营上机考试---C:单词翻转面试题...

题目描写叙述:翻转句子中单词的顺序。但单词内字符的顺序不变。句子中单词以空格符隔开。
为简单起见,标点符号和普通字母一样处理。如:"I am a student."翻转成"student. a am I"。


#include <iostream>
#include<assert.h>
#include<cstring>
using namespace std;

void swap(char &a, char &b)
{
    char tmp = b;
    b = a;
    a = tmp;
}

void swap_str(char* str, int start, int end)
{
    assert(str!=NULL && start <= end);
    int low = start;
    int high = end;
    //整个句子按字符翻转
    while (low < high)
    {
        swap(str[low], str[high]);
        low++;
        high--;
    }
}

void reverse_word(char str[])
{
    int len = strlen(str);
    //翻转整个句子
    swap_str(str, 0, len-1);
    int s = 0;
    int e = 0;
    //翻转每一个单词
    for (int i=0; i<len; i++)
    {
        e = i;
        if (str[e] == ' ')
        {
            //str[e]为空格,所以范围是[s,e-1].
            swap_str(str, s, e-1);
            s = e + 1;
        }
    }
}

int main()
{
    char str[]="I am a student.";
    reverse_word(str);
    cout<<str<<endl;
    return 0;
}


相关文章:

  • Ubuntu 安装chrome
  • Java:对象的强、软、弱和虚引用
  • Linux转发性能评估与优化(转发瓶颈分析与解决方式)
  • MFC Wizard创建的空应用程序中各个文件内容的解析
  • Codeforces Round #417 (Div. 2) B. Sagheer, the Hausmeister
  • CloudXNS API PHP SDK V1.0,增加DDNS等特性
  • Firefox 表示不计划开发 Windows 10 手机 APP
  • 没有硬件的 WWDC:苹果欲再造生态圈?
  • mongodb.conf配置文件详解
  • Manjaro Linux 17.0.2 pre 5 发布
  • 微软 PowerShell 成为黑客恶意软件传播工具
  • Docker 收购 Tutum,进一步完善其生态布局
  • 软件工程——团队答辩
  • Scrapy基础(十四)————Scrapy实现知乎模拟登陆
  • IdentityServer4 SigningCredential(RSA 证书加密)
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • GraphQL学习过程应该是这样的
  • Java新版本的开发已正式进入轨道,版本号18.3
  • Java知识点总结(JavaIO-打印流)
  • JS数组方法汇总
  • mysql外键的使用
  • Spring框架之我见(三)——IOC、AOP
  • 从零开始在ubuntu上搭建node开发环境
  • 关于List、List?、ListObject的区别
  • 来,膜拜下android roadmap,强大的执行力
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 用Canvas画一棵二叉树
  • 正则与JS中的正则
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​第20课 在Android Native开发中加入新的C++类
  • ​香农与信息论三大定律
  • #DBA杂记1
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #includecmath
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (04)odoo视图操作
  • (done) 两个矩阵 “相似” 是什么意思?
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (论文阅读40-45)图像描述1
  • (一)基于IDEA的JAVA基础10
  • (转)jQuery 基础
  • (转)为C# Windows服务添加安装程序
  • ***原理与防范
  • **PHP分步表单提交思路(分页表单提交)
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • @NestedConfigurationProperty 注解用法