[算法练习及思路-程序员面试金典(Java解法)]No9.字符串轮转-程序员宅基地

技术标签: JAVA  程序员面试金典  面试  算法  java  字符串  算法练习  

题号:no9

题目名:字符串轮转
原题URL:https://leetcode-cn.com/problems/string-rotation-lcci/
题目描述

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

示例

示例 1:

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

示例 2:

 输入:s1 = "aa", s2 = "aba"
 输出:False
限制
  • 字符串长度在[0, 100000]范围内。
  • 你能只调用一次检查子串的方法吗?
思路

1.将字符串2连接两次,如果是旋转来的,那里面肯定有字符串1

2.定义一个头指针和尾指针,定位在字符串2

3.移动字符串2上面的指针,如果串1和串2首位相等,再详细比较里面的字符

4.最终需要遍历的就是字符串的长度

解题代码
public class Solution {
    
    public boolean isFlipedString(String s1, String s2) {
    
        if(s1==null||s1.length()==0) {
    
            return s2 == null || s2.length() == 0;
        }
        if(s1.length()!=s2.length()) return false;
        String str = s2+s2;
        int len = s1.length();
        char[] chars1 = s1.toCharArray();
        char[] chars2 = str.toCharArray();
        for (int start = 0; start <= chars1.length; start++) {
    
            //如果找到可能匹配的字段
            if(chars1[0]==chars2[start]&&chars1[len-1]==chars2[start+len-1]) {
    
                boolean isFliped = true;
                for (int i = 0; i < len-1-i; i++) {
    
                    if(!(chars1[i]==chars2[start+i]&&chars1[len-1-i]==chars2[start+len-1-i])) {
    
                        isFliped = false;
                        break;
                    }
                }
                if(isFliped) return true;
            }
        }
        return false;
    }
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_41522089/article/details/108756535

智能推荐

进化算法(遗传算法、粒子群算法、差分算法)—— Rosenbrock函数优化_差分进化算法和粒子群-程序员宅基地

文章浏览阅读1.1k次。三种进化算法:遗传算法、粒子群算法、差分算法,以及它们再Rosenbrock函数优化问题中的应用。这是一篇学习笔记,可能有纰漏。_差分进化算法和粒子群

Sora普通人理解的原理——帧处理_sora每生成一帧需要消耗-程序员宅基地

文章浏览阅读817次,点赞21次,收藏9次。Sora普通人理解的原理——帧处理_sora每生成一帧需要消耗

如何训练专属的OCR文字识别模型_tesseract 中文训练模型-程序员宅基地

文章浏览阅读5.6k次。随着文档数字化的发展,光学字符识别 (OCR) 变得越来越流行,OCR 在处理基于图像的文档中发挥着至关重要的作用。基于电商APP移动端的业务场景,是否也能利用OCR来为用户提供更加便利的购物体验呢。_tesseract 中文训练模型

四旋翼飞行器Quadrotor飞控之 PID调节(參考APM程序)-程序员宅基地

文章浏览阅读240次。做四轴也有一段时间了。近期一直在做PID方面的工作。如今四轴基本能够实现室内比較稳定的飞行,操控手感也能够接受。稍后上试飞视频。在此把一些PID方面的经验总结总结和大家分享一下。首先介绍一下大概的硬件组成:MCU:FreescaleMK60D传感器(IMU):GY-86模块(MPU6050+HMC5883L+MS5611)433MHz传输数据模块DC-DC可调..._调试无人机偏航轴pid

应用于web页面的日期(日历)时间选择器(控件)_手动实现web时间选择器-程序员宅基地

文章浏览阅读7.1k次。控件特性 实现的主要技术为Javascript, DOM 在iframe中显示控件,不会被SELECT,OBJECT等标签覆盖。 包含日期和时间的选择,也可以只选择日期。 使用举例 选择日期 选择日期小时 选择日期小时分钟 选择日期小时分钟秒 源代码及文档下载:http://pi_手动实现web时间选择器

STM32Cube高效开发教程<基础篇>(十六)----CAN总线通信-程序员宅基地

文章浏览阅读154次,点赞5次,收藏2次。一、 CAN总线结构和传输协议声明:本人水平有限,博客可能存在部分错误的地方,请广大读者谅解并向本人反馈错误。本专栏博客参考《STM32Cube高效开发教程(基础篇)》,有意向的读者可以购买正版书籍辅助学习,本书籍由王维波老师、鄢志丹老师、王钊老师倾力打造,书籍内容干货满满。一、 CAN总线结构和传输协议CAN是控制器区域网络(Controller Area Network)的缩写。CAN总线是一种适用于工业设备的高性能总线网络。在本博客中,会介绍CAN总线通信协议,CAN的HAL驱动程序。

随便推点

Android HTTP访问的两种方式(HttpClient和HttpURLConnection)_androidhttp请求-程序员宅基地

文章浏览阅读1.9k次。Android HTTP访问的两种方式(HttpClient和HttpURLConnection)_androidhttp请求

微软商店详细安装(Microsoft Store)_microsoft store安装-程序员宅基地

文章浏览阅读1.3k次,点赞8次,收藏6次。【代码】微软商店详细安装(Microsoft Store)_microsoft store安装

windows中Visual Studio Code安装node_visual studio code安装node.js-程序员宅基地

文章浏览阅读658次。http://nodejs.cn/选择下载.zip的64位然后进行环境配置选择系统变量中的path编辑输入你node安装的地址按住win+r输入cmd再输node -v出现如图就安装好了。打开Visual Studio Code点击文件夹,按住Ctrl+shift+y在终端输入npminstall-gless在输入lessc -v如图所示就好了!有用的话不妨点个赞!!!..._visual studio code安装node.js

内联函数 inline_keil inline-程序员宅基地

文章浏览阅读197次。在编译阶段 在函数的调用点直接展开。定义点不生成符号inline 和static 区别inline 无清栈开栈 static 有inline和 宏的区别分别在编译阶段,和预编译阶段 (内联是更高级的宏:有词法分析)注意事项1,内联的实现写在头文件中 .h2,只在Release版本生成3,内联是一个建议 递归,循环,swich 不能使用4,基于实现,不是基于声明优缺点..._keil inline

[4G&5G专题-87]:物理层 - 4G LTE的帧结构_lte帧结构-程序员宅基地

文章浏览阅读5.7k次,点赞7次,收藏45次。目录第1章 什么是帧1.1 帧的基本定义1.2 以太网帧结构1.3 LTE 10ms无线帧结构的特点1.4 LTE 10ms无线帧结构的分类第2章 LTE FDD 10ms无线帧的结构第3章LTE TDD 10ms无线帧的结构3.1 TDD帧结构概述3.2 TDD帧的上下行子帧的配比3.3 特殊子帧的配置第4章 LTE 1ms子帧的频域资源RE4.1 频域子载波资源4.2 OFDM周期4.3 常见的时频资源术语第1章 什么是帧1.1 ..._lte帧结构

(144)Verilog HDL:设计一个真值表之Truthtable1_verilog 语言真值表-程序员宅基地

文章浏览阅读681次。FPGA(FieldProgrammableGateArray)是在PAL、GAL等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA设计不是简单的芯片研究,主要是利用FPGA的模式进行其他行业产品的设计。与ASIC不同,FPGA在通信行业的应用比较广泛。1、希望阅读笔者的博客可以对您有所帮助;2、希望读者可以快速学习VerilogHDL编程语言;。https。..._verilog 语言真值表

推荐文章

热门文章

相关标签