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

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

我们先来看题目描述:

给定两个字符串, 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.xdnf.cn/news/12300.html

相关文章:

  • Offline Transition Modeling via Contrastive Energy Learning
  • 【iSAQB软件架构】软件架构中构建块的视图:黑箱、灰箱和白箱及其交互机制
  • vue和uniapp聊天页面右侧滚动条自动到底部
  • 计算机网络领域所有CCF-A/B/C类期刊汇总!
  • 低代码逻辑引擎配置化实战:三步穿透审批记录查询
  • 鞋内测量新方案:Moticon传感器鞋垫OpenGo在运动科学中的平衡测试应用
  • BIM Revit教程(十一)如何使用机器学习实现 MEP 布局自动化?
  • NumPy数组操作完全指南:从入门到精通
  • 【Zephyr 系列 9】Zephyr 与设备树机制详解:如何为你的板子编写 Devicetree
  • open3d:使用彩色图和深度图生成点云
  • 拆解实战案例:电商ERP管理系统从需求到原型全流程设计
  • 深度学习习题3
  • IDEA 包分层显示设置
  • Postgresql字符串操作函数
  • 《前端面试题:CSS3新特性》
  • 结合PDE反应扩散方程与物理信息神经网络(PINN)进行稀疏数据预测的技术方案
  • 【VLAs篇】02:Impromptu VLA—用于驱动视觉-语言-动作模型的开放权重和开放数据
  • reverse笔记
  • 深度学习在非线性场景中的核心应用领域及向量/张量数据处理案例,结合工业、金融等领域的实际落地场景分析
  • 比特币:固若金汤的数字堡垒与它的四道防线
  • 【Redis】笔记|第9节|Redis Stack扩展功能
  • PPT转图片拼贴工具 v2.0
  • Linux(12)——基础IO(下)
  • 泊松融合的介绍和OpenCV教程
  • pikachu靶场通关笔记15 CSRF关卡01-CSRF(GET)
  • 机器学习实验八--基于pca的人脸识别
  • OPenCV CUDA模块目标检测----- HOG 特征提取和目标检测类cv::cuda::HOG
  • NoSQL之Redis配置与优化
  • 阿里云 Linux 搭建邮件系统全流程及常见问题解决
  • rust或tauri项目执行命令的时候,cmd窗口也会弹出显示解决方法