当前位置: 首页 > news >正文

旋转字符串的解题思路与算法分享

我们先来看题目描述:

给定两个字符串, s 和 goal 。如果在若干次旋转操作之后,s 能变成 goal ,那么返回 true 。

s 的 旋转操作 就是将 s 最左边的字符移动到最右边。

  • 例如, 若 s = 'abcde',在旋转一次之后结果就是 'bcdea' 。

示例 1:

输入: s = "abcde", goal = "cdeab"
输出: true

示例 2:

输入: s = "abcde", goal = "abced"
输出: false

提示:

  • 1 <= s.length, goal.length <= 100
  • s 和 goal 由小写英文字母组成

解决方案

方法一:模拟

思路和算法

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

代码

Python3

class Solution:def rotateString(self, s: str, goal: str) -> bool:m, n = len(s), len(goal)if m != n:return Falsefor i in range(n):for j in range(n):if s[(i + j) % n] != goal[j]:breakelse:return Truereturn False

Java

class Solution {public boolean rotateString(String s, String goal) {int m = s.length(), n = goal.length();if (m != n) {return false;}for (int i = 0; i < n; i++) {boolean flag = true;for (int j = 0; j < n; j++) {if (s.charAt((i + j) % n) != goal.charAt(j)) {flag = false;break;}}if (flag) {return true;}}return false;}
}

 好了,今天的文章分享就到这里了,希望对大家的学习有帮助哦!

http://www.dtcms.com/a/233770.html

相关文章:

  • 二叉树-104.二叉树的最大深度-力扣(LeetCode)
  • Linux 下生成动态库时 -fPIC的作用详解
  • SpringBoot(八) --- SpringBoot原理
  • 电工基础【7】往返运动控制、星三角形降压启动
  • 深度学习N2周:构建词典
  • 【LeetCode】1061. 按字典序排列最小的等效字符串(并查集)
  • Qt 按钮类控件(Push Button 与 Radio Button)(1)
  • SLG游戏分析
  • opencv学习笔记1:图像基础、图像操作、直方图均衡化详解
  • python打卡训练营打卡记录day45
  • 【C++高阶二】STL的map和set
  • rapidocr 3.0 在线demo来了
  • 插入排序,二分查找,字符数组 day8
  • 如何配置Git LFS?
  • [蓝桥杯]倍数问题
  • ZooKeeper 安装教程(Windows + Linux 双平台)
  • 26考研 | 王道 | 计算机组成原理 | 三、存储系统
  • [蓝桥杯]堆的计数
  • 2023年全国研究生数学建模竞赛华为杯A题WLAN网络信道接入机制建模求解全过程文档及程序
  • function call到MCP技术演进
  • 44、web实验-后台管理系统基本功能
  • 使用 minicom 录制串口报文并回放
  • 黑马Java面试笔记之 并发编程篇(线程池+使用场景)
  • c++算法学习4——广度搜索bfs
  • 如何做好一份技术文档?(上篇)
  • Java 实现下拉框树状结构接口的核心思路
  • 设计模式(代理设计模式)
  • openGauss数据库备份与恢复实践
  • Python中的self参数介绍
  • Cilium动手实验室: 精通之旅---6.Cilium IPv6 Networking and Observability - Lab