2021-02-12:如何判断两个字符串是否互为旋转字符串?

article/2025/10/8 4:26:15

2021-02-12:如何判断两个字符串是否互为旋转字符串?

福哥答案2021-02-12:

假设字符串str1是“ABCDE”,字符串str2是“CDEAB”。字符串str2可以拆分成“CDE”和“AB”,可以拼成“ABCDE”。所以str1和str2互为旋转字符串。

解法:
1.判断str1和str2的字符串长度是否相等。不等返回false;相等进行下一步。
2.设str=str1+str1,判断str是否包含str2。如果包含,是旋转字符串。如果不包含,说明不是旋转字符串。
字符串是否包含子字符串,可以用相应语言的系统自带函数,也可以用kmp算法。

代码用golang编写,代码如下:

package mainimport ("fmt""strings"
)func main() {str1 := "ABCDE"str2 := "CDEAB"ret := rotateString1(str1, str2)fmt.Println("1.系统自带函数:", ret)ret = rotateString2(str1, str2)fmt.Println("2.kmp算法:", ret)
}//1.系统自带函数
func rotateString1(A string, B string) bool {return len(A) == len(B) && strings.Contains(A+A, B)
}//2.kmp算法
func rotateString2(A string, B string) bool {return len(A) == len(B) && kmp(A+A, B) >= 0
}func kmp(s string, m string) int {sLen := len(s)mLen := len(m)if sLen < mLen {return -1}if mLen == 0 {return 0}next := getNextArray(m)x := 0y := 0for x < sLen && y < mLen {if s[x] == m[y] {x++y++} else if y > 0 {y = next[y]} else {x++}}if y == mLen {return x - y} else {return -1}
}func getNextArray(m string) []int {mLen := len(m)if mLen == 1 {return []int{-1}}next := make([]int, mLen)next[0] = -1cn := 0for i := 2; i < mLen; i++ {if m[i-1] == m[cn] {cn++next[i] = cni++} else if cn > 0 {cn = next[cn]} else {i++}}return next
}

执行结果如下:
在这里插入图片描述


力扣796.旋转字符串
评论


http://chatgpt.dhexx.cn/article/Wi5Btegb.shtml

相关文章

字符串旋转问题详解

题目名称&#xff1a; 字符串左旋 题目内容&#xff1a; 实现一个函数&#xff0c;可以左旋字符串中的k个字符。 例如&#xff1a; ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB 方法一&#xff1a;暴力求解 这种方法相对比较容易&#xff0c;我们先来看看代码&…

Python——旋转字符串

题目描述 给定两个字符串s和goal&#xff0c;如果在若干次旋转操作后s能够变成goal&#xff0c;那么就返回True s的旋转操作就是把s最左面的字符放到最右面 例如&#xff1a; s ‘abcde’ 旋转一次就是‘bceda’ 而如果goal是bceda&#xff0c;那么goal就是s的旋转字符串 P…

【旋转字符串的四种方法】

目录&#xff1a; 前言一、题目描述二、题目解析&#xff08;一&#xff09;依次左旋&#xff08;二&#xff09;创建中间数组&#xff08;三&#xff09;三次倒置&#xff08;四&#xff09;接长数组 总结 前言 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 旋转字符…

Android 实时监听APP进入前台或后台

下面已更新说明 前言 在我们开发的过程中&#xff0c;经常会遇到需要我们判断app进入后台&#xff0c;或者切换到前台的情况。比如我们想判断app切换到前台时&#xff0c;显示一个解锁界面&#xff0c;要求用户输入解锁密码才能继续进行操作&#xff1b;我们想判断app切换到后…

什么是后台

什么是后台&#xff1f; 后台指的是运行在后台并且控制着前端的内容&#xff0c;它主要负责程序设计架构思想&#xff0c;管理数据库等。后台更多的是应用到数据库并且进行交互以处理相应的业务逻辑。它需要考虑的是如何实现功能、数据的存取、平台的稳定性与性能等方面。需要参…

Android后台应用开启前台服务---android8到android12梳理

以下内容都是针对start方式启动的service&#xff0c;而非bind启动的srevice。因为bind启动的服务生命周期始于Activity绑定在一起的&#xff0c;会随Activity的销毁而停止。但start方式启动的service独立的&#xff0c;即使应用销毁它也可以继续运行&#xff0c;故Android系统…

关闭后台App刷新后台应用刷新是做什么的

官方解释 “后台应用刷新” 是什么作用&#xff08;如图&#xff09; 关闭后台应用刷新&#xff0c;并不会影响到消息接收&#xff08;因为消息接收是通过Apple Push Notification机制来的&#xff09;省电模式默认全部应用都关闭刷新&#xff08;说明关闭可以省电&#xff09…

Android——后台服务

Android应用编程实验 实验名称&#xff1a;Android 后台服务 实验目的&#xff1a;通过Service设计后台服务程序&#xff0c;通过Broadcast实现信息广播机制 实验内容&#xff1a; 设计一个简单的后台音乐服务程序&#xff1b;设计一个简单的信息广播程序示例&#xff1b;利用B…

Android应用后台网络管控机制

应用后台网络管控机制 概述 在维护手管应用时&#xff0c;经常遇到与应用后台网络控制相关的问题&#xff0c;在解决这些问题的过程中&#xff0c;学习了下应用后台网络控制的流程以及一些日志的分析方法&#xff0c;现在把它总结一下&#xff0c;方便自己以及他人的学习。 网…

Android将后台应用唤起到前台的方法

在我们开发的过程中&#xff0c;经常遇到app进入后台&#xff0c;或者切换到前台的情况。 比如&#xff1a; 从后台切换到前台显示全屏广告实践来电显示从后台切换到前台 如图显示&#xff1a;压后台10秒钟&#xff0c;自动弹出 实现主要分为两个步骤&#xff1a; 第一步通…

后台功能

#&#x1f30c; 后台功能 后台功能模块&#xff0c;包含主控面板&#xff0c;开发管理&#xff0c;日志管理&#xff0c;系统监控&#xff0c;通知公告&#xff0c;文件管理&#xff0c;定时任务。 #1. 主控面饭 主控面板展示了系统的一些统计信息&#xff0c;采用默认的ant…

如何让应用保持后台运行,做到保活?

其实&#xff0c;我们无法做到真正意义上的保活&#xff0c;应为系统进程会自动杀死占用过大内存的某个应用。 但我们还有一种选择&#xff0c;就是过滤该应用的包名&#xff0c;做到后台任务键清理不掉它&#xff0c;单独去除不掉它&#xff0c;只有返回键才能做到真正的退出…

【已解决】Android 如何让应用在后台运行

应用在后台跑&#xff0c;这种说法可能不够准确&#xff0c;就是说应用没有finish退出&#xff0c;但也不在前台的状态&#xff0c;例如应用执行中点击了home键一样。如何实现呢&#xff1f; 要点&#xff1a; 退回后台是执行了home键&#xff0c;activity分别执行了onPause和…

如何让安卓APP一直在后台运行?

本文摘自微信公众号“android高心星的私塾” 一 声明 1 网上很多的保活手段&#xff0c;但是不靠谱的居多 2 本文只是进行保活知识的推广&#xff0c;不是在教你做永生不死的进程 二 保活手段 1 业界保活手段&#xff1a;黑色保活&#xff0c;灰色保活&#xff0c;白色保活 2…

Android | 判断App处于前台还是后台的方案

很多场景下&#xff0c;都需要判断某个App处于前台还是后台。本文集网上编写的前台判断方案于一体。 目前&#xff0c;有6种方案&#xff1a; 方 法 判断原理需要权限可以判断其他应用位于前台特点①RunningTask否Andorid4.0系列可以&#xff0c;5.0以上机器不行Android5.0此方…

fastapi_No.18_后台应用

文章目录 简介使用场景 创建后台应用步骤第一步&#xff1a;定义后台应用函数第二步&#xff1a;使用后台应用函数 在依赖项中的后台应用示例代码示例代码说明 简介 后台应用就是在发送响应后运行的函数。通常用在请求后需要耗费较长时间处理&#xff0c;且客户端不需要在接收…

win11如何禁用后台应用权限 Windows11禁用后台应用权限的设置方法

我在使用Win11系统的电脑时经常会遇到自动打开应用程序情况&#xff0c;很多小伙伴都不知道到如何关闭&#xff0c;那么遇到这种情况应该要如何解决呢?下面就和小编一起来看看Win11系统要如何去禁用软件的后台权限吧。更多windows11系统教程&#xff0c;可以参考小白一键重装网…

提高软件CPU占用率

案例&#xff1a; 独立线程以5ms一包的速率接收指令&#xff08;一共大概70-80种指令类型&#xff09;&#xff0c;并放入一个队列A 主线程中&#xff0c;根据定时器去队列A中取数据&#xff0c;并解析/计算/显示&#xff08;速率&#xff1a;200包/秒&#xff09; 现象&…

CPU使用率100%,如何解决

文章目录 CPU使用率概念CPU使用率的重要指标计算公式 查看CPU使用率CPU 使用率过高总结 CPU使用率 概念 单位时间内CPU使用情况的统计&#xff0c;以百分比方式显示 Linux是一个多任务操作系统&#xff0c;将每个CPU的时间划分为很短的时间片&#xff0c;通过调度器轮流分配…

解决 服务器cpu使用率100%,变成矿鸡之我与病毒crypto斗智斗勇,宝塔面板cpu使用率100%爆红

关于 简单解决宝塔面板显示CPU使用率 100%&#xff0c;但top却没找到相关进程这件事&#xff01;&#xff01;&#xff01; 如图&#xff1a; 作为一个小白&#xff0c;我只是想简单的搭建一个个人网站&#xff0c;结果碰到这个闹心的事。 服务器: 阿里云服务器 面板&#xff…