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

【算法萌新闯力扣】:旋转字符串

    力扣热题:796.旋转字符串

开篇

 今天下午刷了6道力扣算法题,选了一道有多种解法的题目与大家分享。

题目链接:796.旋转字符串

题目描述

在这里插入图片描述

代码思路

 完全按照题目的要求,利用StringBuffer中的方法对字符串进行旋转,寻找相同的一项

代码纯享版

class Solution {public boolean rotateString(String s, String goal) {if(s.length() != goal.length()) return false;StringBuffer str = new StringBuffer(s);for(int i = 0; i < s.length(); i++){if(str.toString().equals(goal)) return true;char a = str.charAt(0);str.delete(0,1);str.append("" + a);}return false;}
}

代码逐行解析版

class Solution {public boolean rotateString(String s, String goal) {if(s.length() != goal.length()) return false; //两个字符串如果长度不同,一定不符合要求StringBuffer str = new StringBuffer(s);//改变s的类型,方便操作for(int i = 0; i < s.length(); i++){if(str.toString().equals(goal)) return true; //如果两个字符串一样,返回truechar a = str.charAt(0); //根据题目要求,以下3行对字符串进行旋转str.delete(0,1);str.append("" + a);}return false; //对字符串旋转与其长度相同的次数后仍无法满足要求,返回false}
}

其它解法

1.利用取模运算,不需要对字符串进行旋转即可进行判断

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;}
}

2.这方法太牛逼了。字符串s+s中包含了旋转的所有结果,只需要判断goal是否为s+s的子串。

class Solution {public boolean rotateString(String s, String goal) {return s.length() == goal.length() && (s + s).contains(goal);}
}

结语

 如果这道题的分享对你有帮助,点个关注支持一下,我会每天更新力扣题目的讲解,与大家一起进步。

http://www.lryc.cn/news/236938.html

相关文章:

  • 可逆矩阵的性质
  • HIT 模式识别 手写汉字分类 Python实现
  • GPT-4V-Act :一个多模态AI助手,能够像人类一样模拟通过鼠标和键盘进行网页浏览。
  • 剪辑视频怎么把说话声音转成文字?
  • maven打包插件配置模板
  • clusterProfiler包学习
  • 【Qt开发流程之】布局管理
  • 建筑可视化中的 3D 纹理
  • 9.docker镜像Tag为none的原因
  • HTML5学习系列之响应式图像
  • 基于数据库(MySQL)与缓存(Redis)实现分布式锁
  • 2023年A特种设备相关管理(锅炉压力容器压力管道)证模拟考试题库及A特种设备相关管理(锅炉压力容器压力管道)理论考试试题
  • 系统及其存储相关
  • 鸿蒙原生应用开发-折叠屏、平板设备服务卡片适配
  • android查漏补缺(8)Android广播不同种类介绍
  • 什么是美颜SDK?直播美颜SDK技术深度剖析
  • 红海营销时代,内容占位的出海品牌更有机会营销占位
  • 解决龙芯loongarch64服务器编译安装Python后yum命令无法使用的问题“no module named ‘dnf‘”
  • Leetcode2937. 使三个字符串相等
  • <MySQL> 如何合理的设计数据库中的表?数据表设计的三种关系
  • 基于操作系统讨论Java线程与进程、浅谈Go的线程与管程
  • CICD 持续集成与持续交付——jenkins
  • 【Zabbix】Zabbix Agent 2在Ubuntu/Debian系统上的安装
  • 浅谈无线测温产品在菲律宾某工厂配电项目的应用
  • 软件工程第十一周
  • 【从入门到起飞】JavaSE—带你了解Map,HashMap,TreeMap的使用方法
  • [Docker]六.Docker自动部署nodejs以及golang项目
  • FPC焊点剥离失效分析
  • Java爬虫框架下代理使用中的TCP连接池问题及解决方案
  • PostgreSQL 数据定义语言 DDL