【剑指offer】C++ 翻转字符串里面的单词

目录

题目:

思路:

代码出现

结果


题目:

给定一个字符串,逐个翻转字符串中的每个单词。

示例 1:
输入: "the sky is blue"
输出: "blue is sky the"

示例 2:
输入: "  hello world!  "
输出: "world! hello"
解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。

示例 3:
输入: "a good   example"
输出: "example good a"
解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。

思路:

1.将字符串多余的空格除去(本题难点);

2.将去除空格和后的字符串翻转;

3.将单词挨个翻转,以空格为翻转标志。

代码出现

#if 0
include <iostream>
#include <vector>
using namespace std;
#endif#include<iostream>
#include <string.h>
#include <string>
using namespace std;
//理解代码需要注意空格的个数,删除完空格后,中间的还剩一个,前后没有
void reverse(string& s, int start, int end)
{for (int i = start, j = end; i < j; i++, j--){swap(s[i], s[j]);}
}
void remove_spaces(string& s)
{int slow = 0, fast = 0;while (s.size() > 0 && s[fast] == ' ' && fast < s.size())//去除开头的空格{fast++;}for (fast; fast < s.size(); fast++)//去除中间的空格,包括的空格(但还剩一个空格){if (fast - 1 > 0 && s[fast] == ' ' && s[fast - 1] == ' '){continue;}else{s[slow++] = s[fast];//s[slow]=s[fast];slow++;}}if (slow - 1 > 0 && s[slow - 1] == ' '){s.resize(slow - 1);}else{s.resize(slow);}
}int main()
{string s;cout << "string: " << endl;getline(cin, s);remove_spaces(s);//删除空格reverse(s, 0, s.size() - 1);//翻转字符串for (int i = 0; i < s.size(); i++)//每个单词翻转{int j = i;while (j < s.size() && s[j] != ' '){j++;}reverse(s, i, j - 1);i = j;}cout << "res:  " << s << endl;
}#if 0
int main()
{Solution test;//vector<int> input = {1,2,3,4,5,6,7,8};std::string result = test.ReverseSentence("qqqqqqaas");// for (auto var : result)//{//    std::cout << "var:" << var << std::endl;//}std::cout << "result:" << result << std::endl;return 0;
}
#endif

结果

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

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

相关文章

289页初中级前端题助你拿下Offer,web前端开发面试技巧

HTML面试题部分 1.H5的新特性有哪些 2.Label的作用是什么&#xff1f;是怎么用的&#xff1f; 3.HTML5的form如何关闭自动完成功能 4.dom如何实现浏览器内多个标签页之间的通信? 5.实现不使用 border 画出1px高的线&#xff0c;在不同浏览器的标准模式与怪异模式下都 能保持一…

数字化转型导师坚鹏:银行业科技产品及零售贷款咨询方法与案例

银行业科技产品及零售贷款咨询方法与实战案例 课程背景&#xff1a; 数字化转型背景下&#xff0c;很多机构存在以下问题&#xff1a; 不知道银行业科技产品咨询方法&#xff1f; 不知道零售贷款咨询方法与案例&#xff1f; 不知道信贷中台咨询方法与案例&#xff1f; …

Redis 7.0版本主从复制机制

1、引言 Redis是一个开源、高性能、内存键值存储系统&#xff0c;同时也提供了数据结构服务器的功能。它支持五种主要的数据类型&#xff1a;字符串&#xff08;String&#xff09;、哈希表&#xff08;Hashes&#xff09;、列表&#xff08;Lists&#xff09;、集合&#xff…

建立网络防御时需要重点考虑的10个因素

互联网安全中心&#xff08;CIS&#xff09;建议企业可以从以下10个因素入手&#xff1a;资产管理、数据管理、安全配置、账户和访问控制管理、漏洞管理、日志管理、恶意软件防御、数据恢复、安全培训和事件响应。 1、资产管理 建立网络防御的第一步是制定企业资产和软件资产的…

【Godot4自学手册】第二十节增加游戏的打击感,镜头震颤、冻结帧和死亡特效

这节我主要学习增加游戏的打击感。我们通过镜头震颤、冻结帧、增加攻击点特效&#xff0c;增加死亡。开始了。 一、添加攻击点特效 增加攻击点特效就是&#xff0c;在攻击敌人时&#xff0c;会在敌人受击点显示一个受击动画。 1.添加动画。 第一步先做个受击点动画。切换到…

【韩国留学】四大生活技能 学起来!柯桥留学中介韩语学习

如何高效拿学分 在韩国大学&#xff0c;学分是评价学生学习成果的重要标准。要想高效拿学分&#xff0c;首先要制定合理的学习计划。明确每学期需要修的课程&#xff0c;并提前预习&#xff0c;了解课程重点和难点。 其次&#xff0c;要积极参与课堂讨论&#xff0c;这不仅能提…

迪丽热巴留洋千金回国了吗

迪丽热巴&#xff0c;这个名字在近年来的娱乐圈中可谓是如雷贯耳。作为中国当红女演员&#xff0c;她的美貌与才华吸引了无数粉丝的目光。而近日&#xff0c;有关迪丽热巴留洋千金回国的消息引起了广泛的关注与讨论。 一直以来&#xff0c;迪丽热巴的留学经历被视为她人生中的一…

代码随想录刷题笔记-Day28

1. 重新安排行程 332. 重新安排行程https://leetcode.cn/problems/reconstruct-itinerary/给你一份航线列表 tickets &#xff0c;其中 tickets[i] [fromi, toi] 表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。 所有这些机票都属于一个从 JFK&#xff08;肯…

Vue开发实例(八)Vuex状态管理store

Vuex状态管理store 一、Vuex的安装与配置二、store使用方法1、基础使用2、提交变更3、getters使用4、在其他页面&#xff08;组件&#xff09;中显示5、modules多模块 做vue项目的时候&#xff0c; store状态管理器可以帮助我们完成一些数据的存储和管理&#xff0c;通俗理解是…

C语言——结构体(位段)、联合体、枚举

hello&#xff0c;大家好&#xff01;我是柚子&#xff0c;今天给大家分享的内容是C语言中的自定义类型结构体、联合体以及枚举&#xff0c;有什么疑问或建议可以在评论区留言&#xff0c;会顺评论区回访哦~ 一、结构体 struct a.结构体声明 不同于数组的是&#xff0c;结构…

字节同事问我:我的Postman为什么连不了数据库?

postman本身没有数据库连接功能&#xff0c;所以用到了node.js中的xmysql实现Rest API的生成&#xff0c;利用postman进行请求&#xff0c;获取需要的数据&#xff0c;来做数据准备或断言。 1 安装 安装node.js&#xff1a;要求版本大于等于7.6 首先保证你的环境上有node.js…

Claude3发布,ChatGPT-4 跌下神坛!兄弟相残?

就在3月5号凌晨&#xff0c;大家还在睡梦中的时候&#xff0c;Anthropic在X上低调的发布了Claude3&#xff0c;没有华丽的辞藻&#xff0c;没有大篇幅的介绍&#xff0c;只是简单的发了个帖子...... 几行简单的文字&#xff0c;浓缩着其一年多来的努力~ 真是让人不禁感叹&…