翻转单词顺序VS左旋转字符串

LeetCode 151 – 翻转字符串里的单词 题目描述 151. 翻转字符串里的单词 解法一:(Python) class Solution: def reverseWords(self, s: str) -> str: return " ".join(reversed(s.split())) 解法二:双端队列(C++) 复杂度分析 时间复杂度: O(N)O(N)O(N),其中 NNN 为输入字符串的长度。 空间复杂度: O(N)O(N)O(N),双端队列存储单词需要 O(N)O(N)O(N) 的空间。 class Solution { public: string reverseWords(strin 立即下载
题目一:
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串“I am a student.”,则输出“student. a am I”。

分析:
这个问题可以分成两个过程来解决:
1.翻转整个句子,翻转结果为.tneduts a ma I
2.再将里面的每个单词翻转一次,结果为student. a am I

class Solution
{
public:
    string ReverseSentence( string str )
    {
        string result = str;
        if ( str.empty() )
            return str;
        int start = 0, end = result.size()-1;
        Reverse( result, start, end );
        //cout << result << endl;
        end = start = 0;
        while ( start < str.size() )
        {
            if ( result[start] == ' '  )    
            {
                start++;
                end++;
            }
            else if ( result[end] == ' ' || result[end] == '\0' )
            {
                Reverse( result, start, --end );
                //cout << "reverse start : " << start << "end : " << end << result << endl;
                start = ++end;
            }
            else 
            {
                end++;
            }
        }
        return result;
    }

    void Reverse( string& str, int start, int end )
    {
        if ( str.empty() )
            return ;
        while ( start < end  )
        {
            char temp = str[start];
            str[start] = str[end];
            str[end] = temp;

            start++;
            end--;
        }
    }
};

int main( void )
{
    string str = "i am a student.";
    Solution sos;
    string result = sos.ReverseSentence( str );
    cout << result << endl;
    return 0;
}
题目二:
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如输入字符串“abcdefg”和数字2,该函数将返回左旋转2位得到的结果“cdefgab”。

分析:
主要有两中思路:
1.最简单,最直观的就是利用辅助数组解决,先将要旋转的前n个字符保存到一个临时辅助数组中,然后将其余字符向前移动n位,然后将辅助数组中的n个字符放置到原字符串的后n位。
2.利用题目一中的思路,先将整个字符串翻转,然后再翻转后n个字符串,再翻转前面剩下的字符串,可以实现字符串的左旋转。

思路一:辅助数组

class Solution
{
public:
    string LeftRotateString( string str, int n )
    {
        if ( n <= 0 )
            return str;
        if ( str.size() <= n || str.empty() )
            return str;
        string temp( str, 0, n );
        int j = 0;
        for ( int i = n; i < str.size(); i++, j++ )
        {
            str[j] = str[i];
        }
        for ( int i = 0; i < temp.size(); i++, j++ )
        {
            str[j] = temp[i];
        }
        return str;
    }
};

int main( void )
{
    string str = "abcdefg";
    Solution sos;
    cout << sos.LeftRotateString( str, 2 ) << endl;
    return 0;
}

思路二:翻转

class Solution
{
public:
    string LeftRotateString( string str, int n )
    {
        if ( n <= 0 || str.size() <= n || str.empty()  )
            return str;

        Reverse( str, 0, n-1 );
        Reverse( str, n, str.size()-1 );
        Reverse( str, 0, str.size()-1 );
        return str;
    }

    void Reverse( string& str, int start, int end )
    {
        if ( str.empty() )
            return ;
        while ( start < end  )
        {
            char temp = str[start];
            str[start] = str[end];
            str[end] = temp;

            start++;
            end--;
        }
    }
};

int main( void )
{
    string str = "abcdefg";
    Solution sos;
    cout << sos.LeftRotateString( str, 2 ) << endl;
    return 0;
}
《探秘 BME680温度湿度气压气体传感器模块:环境感知的卓越之选》:此文为AI自动生成 BME680 是一款由博世公司推出的集成环境传感器模块,在环境监测和物联网等领域中发挥着重要作用。它能够同时测量温度、湿度、气压和气体浓度等多个环境参数,为各种应用提供准确可靠的环境数据。该模块采用小巧的封装形式,便于集成到各种设备中,无论是智能家居、可穿戴设备还是工业监测系统,都能轻松适配。例如,在智能家居系统中,BME680 模块可以监测室内环境参数,如温度、湿度、气压和空气质量等。通过与智能家居控制器或智能手机应用程序的连接,用户可以实时了解室内环境状况,并根据需要进行调整。 阅读详情

相关推荐

R分析|怎么样使用piecewiseSEM构建结构方程模型?保姆级教程

计算科学的发展让我们有了更先进的工具揭示自然规律。结构方程模型(SEM)已被广泛应用于多学科进行数据挖掘。其中在R中实现的结构方程模型是方便快捷的。今天要介绍的piecewiseSEM包就是R中实现SEM的一种方式。piecewiseSEM被开发出来主要目的是为了解决复杂模型简化后进行分段分析。个人认为最大的特点是更灵活,且采用的是原始数据,并不是传统的协方差矩阵。其次,将SEM破碎化为多个独立的方程,对样本量要求较少。

weixin_46814750的博客 6941

[LeetCode](面试题58 - I)翻转单词顺序

题目 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。 示例 1: 输入: "the sky is blue" 输出: "blue is sky the" 示例 2: 输入: " hello world! " 输出: "world! hello" 解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。 示例 3: 输入: "a

zaker123的博客 242

Ubuntu无桥接模式或连不上网(详细解决方法

目录 问题1:Ubuntu没有未桥接的主机网络适配器 解决方法 1.打开VMware安装目录下的文件 ​编辑2.右键安装以上三个文件 3.打开网络状态属性,找到VMware bridgeProtocol,点击安装 问题2.Ubuntu桥接模式连不上网 1.win+r打开cmd终端,输入ipconfig /all 2.记录以下数据 3.打开VMware网络设置 问题1:Ubuntu没有未桥接的主机网络适配器 VMWare安装之后,虚拟网络一直使用默认配置 VMnet0为...

m0_65592409的博客 6062

翻转单词顺序,输入字符串包含多个空格

剑指 Offer 58 - I. 翻转单词顺序 难度简单62收藏分享切换为英文接收动态反馈 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. ",则输出"student. a am I"。 示例 1: 输入: "the sky is blue" 输出:"blue is sky the" 示例 2: 输入: " hello world! " 输出:"world! hello" ...

weixin_41579872的博客 930

电竞护航系统成品搭建俱乐部点单小程序开发三角洲小程序搭建

电竞护航系统成品搭建俱乐部点单小程序开发三角洲小程序搭建

dapengglove的博客 1682

J-LINK下载程序出现No Cortex-M Device found in JTAG chain…问题,最全7种解决方法

J-Link下载程序出现No Corect 等的问题的7种方法 后来编辑JLinkSettings.ini文件,找到"Device"项,将其更改Device="Cortex-M0+"

cjmsea的博客 5614

剑指 Offer 58 - I. 翻转单词顺序

剑指 Offer 58 - I. 翻转单词顺序 题目描述: 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。 示例: 输入: “the sky is blue” 输出: “blue is sky the” 输入: " hello world! " 输出: “world! hello” 解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字

weixin_43825727的博客 192

binning模式下和normal模式下相同曝光参数相同场景加权亮度差异消除方案优化(一)

摘要:针对ISP参数设置中浮点权重系数需转换为整数的问题,提出整数邻域搜索方案。该方法在浮点最优解附近(±1/±2)进行局部搜索,通过逐阶微调找到误差最小的整数权重组合,避免直接取整导致的误差反弹(误差从0.8%降至0.35%)。方案结合范围约束(1~15)和单调性约束(暗端递减、亮端递增),兼顾计算效率(单图耗时<10ms)与硬件兼容性,显著优于暴力搜索和简单取整,满足工程落地需求。

大熊 97

剑指offer——翻转单词顺序VS左旋转字符串

经典面试题:翻转单词顺序VS左旋转字符串

YT54936543的博客 1797

学Simulink——控制执行场景实例:基于Simulink的智能车辆电子稳定控制(ESC)仿真

本文完成了基于 Simulink 的智能车辆电子稳定控制(ESC),实现了:✅ 构建含轮胎非线性的车辆动力学模型✅ 设计滑模横摆稳定性控制器✅ 实现四轮制动力分配逻辑✅ 验证在双移线低附着场景下的卓越稳定性✅ 为主动安全控制系统开发提供完整范式。

xiaoheshang_123的博客 528

SkillClaw:让大模型 Agent skill在多用户生态中实现群体进化的框架

随着大模型应用步入深水区,基于 LLM 的智能体(Agent)正从单一的“沙盒玩具”转变为处理真实世界复杂任务的生产力工具。然而,现有的 Agent 系统通常面临一个致命瓶颈——部署即固化。为了解决这一问题,最近有一篇新论文**《SkillClaw: Let Skills Evolve Collectively with Agentic Evolver》**提出了一种多用户生态 Agent 群体进化框架。

kakaZhui的博客 265

java 翻转单词_翻转单词顺序 vs 左旋转字符串

翻转单词顺序 vs 左旋转字符串题目一:输入一个英文句子,翻转句子中单词的顺序,但单词内字啊的顺序不变。为简单起见,标点符号和普通字母一样处理。举例说明例如输入字符串”I am a student. ”,则输出”student. a am I”。解题思路第一步翻转句子中所有的字符。比如翻转“I am a student. ”中所有的字符得到”.tneduts a m a I”,此时不但翻转了句子中...

weixin_30674575的博客 248

推荐系统(一)概述

在互联网领域,推荐系统(Recommendation Systems)的应用非常广泛。在音视频方面,如抖音、快手、哔哩等;在电商平台方面,如京东、淘宝、拼多多等。推荐有助于帮助用户快速发现潜在感兴趣的内容(音视频、商品、新闻等信息流),从而提升用户体验,同时有助于提升商业效率。从本文开始,笔者将结合自身在信息流推荐领域的经验,通过系列文章对推荐系统展开介绍。

Jin_Kwok的博客 6085

翻转单词顺序列VS左旋转字符串

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

JoliceYu的技术博客 568

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

visio安装包

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

剑指offer刷题————翻转单词顺序 VS 左旋转字符串

题目1 问题重述: 题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student",则输出"student. a am I"。 思路解析: 对于这个题目,我们可以先将字符串整体进行翻转,然后再在每个单词的内部进行翻转,即得到我们想要的答案,具体见代码。 代码实现: class Solution { public: string ReverseSentence(string str) {

李志杰的博客 234

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

翻转单词顺序 VS 左旋转字符串

  全部内容来自《剑指offer》。 题目一:   输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字符一样处理。例如输入字符串“I am a student.”,则输出 “student. a am I”。 ANSWER: void reverse(char *pBegin, char *pEnd) { if (pBegin =...

weixin_34128839的博客 178

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

剑指Offer之 - 翻转单词顺序 VS 左旋转字符串

题目: 1、输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。 例如输入字符串"I am a student.",则输出"student. a am I"。 2、字符串的左旋操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。 比如输入字符串"abcdefg"和数字2,该函数将返回左旋转2

灯火阑珊处 598

42.翻转单词顺序 VS 左旋转字符串(C++版本)

题目一: 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字符一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。 实现代码: void Reverse(char* pBegin, char* pEnd) { if (nullptr == pBegin || nullptr == pEnd) ret...

xupeng1644的博客 1496

剑指Offer——翻转单词顺序VS左旋转字符串

题目1:输入一个英语句子,翻转句子中单词的顺序,但单词内字符的顺序不变,标点符号和普通字母一样处理。 例如:输入字符"I am a student."。则输出" student. a am I"。 Step 1:翻转句子中所有的字符; Step 2:再翻转每个单词中字符的顺序。#include #include #include using namespace std; //翻转字符

In-My-World的专栏 295

翻转单词顺序 VS 左旋转字符串43

题目一(翻转单词顺序):输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串”I am a student.”则输出”student. a am I”。解题思路: 首先翻转整个字符串 再翻转句子中的每个单词 测试用例:int main(){ //输入字符串 char str[16] = "I am a student.

JarrettLife的博客 659

【面试题42】翻转单词顺序VS左旋转字符串

【题目描述】 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。 为简单起见,标点符号和普通字母一样处理。 例如输入字符串"I am student.",则输出"student. a am I" 【解决方案】 先翻转各个单词,再翻转整个句子。 我的代码实现,仅供参考: 1 public static void ReverseSentenc...

aejt95023的博客 98

翻转单词顺序VS左旋转字符串(Java)

题目: 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串“I am a student.”,则输出"student. a am I"。 思路: 思路一:先将整个英语句子中每个单词翻转即将“I am a student.”翻转成“I ma a .tneduts ”。然后再将整个句子翻转就变成"student. a am I"...

Sweet Baby,甜宝 494

【面试题042】翻转单词顺序VS左旋转字符串

【面试题042】翻转单词顺序VS左旋转字符串 题目一: 输入一个英文句子,反转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。 例如输入字符串“I am a student.”,则输出“student. a am I”。 思路一: 反转字符串的顺序,这样子每个单词的顺序也反转了,然后再次反转每个单词,这样子就...

A201241302241的博客 203
上一篇: 和为s的两个数字VS和为s的连续正数序列
下一篇: 扑克牌的顺子
Findway_
博客等级 码龄10年 36粉丝 117原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值