【面试题 01.09. 字符串轮转】

面试题 01.09. 字符串轮转 字符串轮转问题通过拼接字符串的方式,可以高效地检查一个字符串是否是另一个字符串的旋转形式。该方法的时间复杂度为 O(n),空间复杂度为 O(n),并且使用 Python 中的子串检查功能,使得问题的求解变得简洁且高效。 阅读详情

来源:力扣(LeetCode)

描述:

字符串轮转。给定两个字符串 s1 和 s2 ,请编写代码检查 s2 是否为 s1 旋转而成(比如,waterbottle 是 erbottlewat 旋转后的字符串)。

示例1:

 输入:s1 = "waterbottle", s2 = "erbottlewat"
 输出:True

示例2:

 输入:s1 = "aa", s2 = "aba"
 输出:False

提示:

  • 字符串长度在[0, 100000]范围内。

说明:

  • 你能只调用一次检查子串的方法吗?

方法一:模拟

思路

  首先,如果 s1 和 s2 的长度不一样,那么无论怎么轮转,s1 都不能得到 s2,返回 false。在长度一样(都为 n)的前提下,假设 s1 轮转 i 位,则与 s2 中的某一位字符 s2[j] 对应的原 s1 中的字符应该为 s1[(i + j)mod n]。在固定 i 的情况下,遍历所有 j,若对应字符都相同,则返回 true。否则,继续遍历其他候选的 i。若所有的 i 都不能使 s1 变成 s2,则返回 false。

代码:

class Solution {
public:
    bool isFlipedString(string s1, string s2) {
        int m = s1.size(), n = s2.size();
        if (m != n) {
            return false;
        }
        if (n == 0) {
            return true;
        }
        for (int i = 0; i < n; i++) {
            bool flag = true;
            for (int j = 0; j < n; j++) {
                if (s1[(i + j) % n] != s2[j]) {
                    flag = false;
                    break;
                }
            }
            if (flag) {
                return true;
            }
        }
        return false;
    }
};

执行用时:0 ms, 在所有 C++ 提交中击败了100.00%的用户
内存消耗:7.5 MB, 在所有 C++ 提交中击败了93.73%的用户
复杂度分析
时间复杂度:O(n2),其中 n 是字符串 s1 的长度。我们需要双重循环来判断。
空间复杂度:O(1)。仅使用常数空间。

方法二:搜索子字符串

思路

  首先,如果 s1 和 s2 的长度不一样,那么无论怎么轮转,s1 都不能得到 s2,返回 false。字符串 s + s 包含了所有 s1 可以通过轮转操作得到的字符串,只需要检查 s2是否为 s + s 的子字符串即可。

代码:

class Solution {
public:
    bool isFlipedString(string s1, string s2) {
        return s1.size() == s2.size() && (s1 + s1).find(s2) != string::npos;
    }
};

执行用时:0 ms, 在所有 C++ 提交中击败了100.00%的用户
内存消耗:7.6 MB, 在所有 C++ 提交中击败了63.18%的用户
复杂度分析
时间复杂度: O(n),其中 n 是字符串s1的长度。 KMP 算法搜索子字符串的时间复杂度为 O(n),其他搜索子字符串的方法会略有差异。
空间复杂度: O(n),其中 n 是字符串 s1 的长度。 KMP 算法搜索子字符串的空间复杂度为 O(n),其他搜索子字符串的方法会略有差异。
author:LeetCode-Solution

GEPA_AIME教程:使用GEPA优化数学问题求解的完整指南 本教程展示了如何使用DSPy框架中的GEPA(Generative Evolutionary Prompt Adaptation)优化器来提升大语言模型在数学竞赛问题(AIME)上的表现。# 创建基础的链式思考程序"""带有详细反馈的评估指标,为GEPA提供学习信号"""try:# 处理解析错误feedback_text = f"最终答案必须是一个有效的整数。你回答了' 阅读详情

相关推荐

[数据转换]将NetCDF(NC)文件转换成单个GeoTIFF文件

有时候要提取tif格式数据中的气象数据,但从气象网站上下载的却是NC格式的文件。这就需要我们将NC格式的文件转换成TIF格式的文件。

G_sea_young的博客 1004

力扣面试题01.09号题

面试题 01.09. 字符串轮转 字符串轮转。给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)。 示例1: 输入:s1 = "waterbottle", s2 = "erbottlewat" 输出:True 示例2: 输入:s1 = "aa", "aba" 输出:False 提示: 字...

whydeboke的博客 196

Cadence原理图设计10个高效技巧:从封装绑定到BOM表导出全流程

本文为硬件工程师提供了一套Cadence OrCAD Capture CIS原理图设计的高效实战指南。文章深度解析了从封装库的精准管理与CIS数据库绑定、封装批量处理技巧,到设计缓存清理、跨页信号追踪,再到关键的DRC检查、网表导出以及智能BOM报表生成的全流程核心技巧,旨在帮助工程师提升设计效率与可靠性,规避常见错误。

weixin_29178069的博客 201

数据结构与算法---字符串---字符串轮转、另一个树的子树

字符串轮转 面试题01.09. 字符串轮转 给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成 (比如,waterbottle是erbottlewat旋转后的字符串)。 示例1: 输入:s1 = “waterbottle”, s2 = “erbottlewat” 输出:True 示例2: 输入:s1 = “aa”, s2 = “aba” 输出:False 提示: 字符串长度在[0, 100000]范围内。 说明: 你能只调用一次检查子串的方法吗? 思路 这道题的意思是,给定一个字符串a,让

IOSSHAN的博客 352

注册“Oracle Provider for OLE DB”和创建链接服务器

注册“Oracle Provider for OLE DB”和创建链接服务器 在sql server 数据库上创建链接服务器,连接oracle数据库,访问接口需要设置为:“Oracle Provider for OLE DB”。 如果电脑上没有这个驱动,安装一个完整的Oracle11gR2程序是一个有效的方法,但这个64位版本的安装包有2个多G, 相当庞大,如果仅仅...

weixin_30760895的博客 2384

带硬约束的物理信息神经网络(PINN with Hard Constraint)示例及代码

本文以一个案例介绍了带硬约束的物理信息神经网络的原理及实现步骤。

m0_72768523的博客 5357

程序员面试经典—— 01.09. 字符串轮转

简单提示字符串轮转。给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,是旋转后的字符串)。通过次数90.5K提交次数168.2K通过率53.8%

qq_51936245的博客 541

项目管理 Agent:进度追踪与风险预警 Harness

我们先从LangChain的Agent定义说起:Agent是一个能感知环境、自主决策、调用工具、执行动作、迭代反思的智能实体。而「项目管理全自主Agent」,就是把Agent的核心能力和项目管理的五大过程组(启动、规划、执行、监控、收尾)深度结合,聚焦执行监控阶段的两个核心痛点:进度偏差自动化计算、风险信号自动化识别与预警的专门化Agent。全感知(Omnisensing):能从。

AI架构师小马 516

字符串轮转(入门算法32)

题目:字符串轮转。给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)。 示例: 输入:s1 = “waterbottle”, s2 = “erbottlewat” 输出:True 输入:s1 = “aa”, s2 = “aba” 输出:False 解题思路1(有一点脱裤子放屁的味道,想直接看最优解可以看解题思路2): 1、要判断一个字符串是不是另一个字符串听过轮转得到,首先,s1和s2的长度肯定相同。 2、如果字符串的

越努力越幸运的博客 907

CH7034B显示模块原理图设计,已量产

显示桥接板的价值,不在于简单把 RGB 排线换成另一种接口,而在于能否把并行视频、时钟、显示控制、模拟输出和辅助配置同时组织成稳定系统。当前这张 CH7034B 原理图就是这种思路:U3 CH7034B 作为核心桥接芯片,输入侧是 LCD_R0~R7、LCD_G0~G7、LCD_B0~B7、LCD_DE、LCD_HSYNC、LCD_VSYNC、LCD_CLK 与 LCD_BL,输出侧则通过 DAC0~DAC2 和 DDC_SC/DDC_SD 形成模拟显示接口边界。

不脱发的程序猿 162

智能车图像处理22-进阶篇14--小s的判断

这篇文章中主要讲述智能车图像处理中 : 小s的判断方法。

taiyuezyh的博客 2571

面试金典09(Python)—— 字符串轮转(简单)

概述:字符串轮转。给定两个字符串 s1 和 s2 ,请编写代码检查 s2 是否为 s1 旋转而成(比如, waterbottle 是 erbottlewat 旋转后的字符串)。

m0_61661179的博客 5万+

视觉Transformer实战 | Token-to-Token Vision Transformer(T2T-ViT)详解与实现

Vision Transformer (ViT) 在计算机视觉领域取得了巨大成功,但标准的 ViT 存在一些局限性,如需要大规模预训练数据、对局部结构建模不足等。Token-to-Token ViT (T2T-ViT) 通过引入渐进式分词过程改进了原始 ViT,使其能够在中小型数据集上取得更好的性能。本节将详细介绍 T2T-ViT 的技术原理,并使用 PyTorch 从零开始实现 T2T-ViT。

盼小辉丶的博客 4万+

LeetCode面试题 01.09 字符串轮转

LeetCode面试题 01.09 字符串轮转

流水账 1412

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

面试题01.09.字符串轮转

面试题01.09.字符串轮转 文章目录题目分析Solution 题目分析 这道题还挺有意思的 首先,旋转字符串的特点是,某些字符从后面跑到了前面,这就好像由一队变两队,队尾变成了队头 Solution public static boolean isRevolving(String s1, String s2) { if (s1 == null || s2 == null) re...

高一少年的博客 411

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

leetcode 面试题 01.09. 字符串轮转

面试题 01.09. 字符串轮转 难度简单21 字符串轮转。给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)。 示例1: 输入:s1 = "waterbottle", s2 = "erbottlewat" 输出:True 示例2: 输入:s1 = "aa", "aba" 输出:False class Solution: def isFlipedString(self, s1: str

fang156239305的博客 309

【Day16】Java算法刷题 [299. 猜数字游戏 ] [1.两数之和] [面试题 01.09. 字符串轮转 ]

Java算法刷题第十六天 [299. 猜数字游戏 ] [1.两数之和] [面试题 01.09. 字符串轮转 ]

ebb29bbe的博客 326

面试题 01.09. 字符串轮转(简单)

题目描述 字符串轮转。给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)。 示例1 输入:s1 = "waterbottle", s2 = "erbottlewat" 输出:True 示例2 输入:s1 = "aa", s2 = "aba" 输出:False 做题思路 1. 错误提示:容易和面试题 01.02. 判定是否互为字符重排(简单)_黑黑藏不住的博客-优快云博客 混淆,字符重排

zxw20171828的博客 672

LeetCode简单题之面试题 01.09. 字符串轮转

可以设置两个循环指针i,j,其中i指针每次检查的时候都固定从s1的开头进行,而j指针则每次从s2中不同的字符处开始循环,第一轮i和j分别指向s1和s2的第0个位置然后同步遍历,第二轮i指向s1的第0个位置,j指向s2的第1个位置,第三轮i指向s1的第0个位置,j指向s2的第2个位置…给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)。输入:s1 = “waterbottle”, s2 = “erbottlewat”

Lonery的博客 785

LeetCode 面试题 01.09. 字符串轮转

LeetCode 面试题 01.09. 字符串轮转 字符串轮转。给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)。

<font color="Pink">Tisfy的博客</font> 475

面试题01.09 字符串轮转

注意这个else是和for循环搭配的,当for循环完整执行,也就是没有遇到break语句时,执行else里面的内容。注意怎么从数据的中间某个位置循环一遍数组所有的元素。是用取余的操作进行循环访问。

qq_30455649的博客 94
上一篇: 【面试题 01.02. 判定是否互为字符重排】
下一篇: 【面试题 17.09. 第 k 个数】
千北@
博客等级 码龄7年 2万+粉丝 642原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千北@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值