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

面试金典题9

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

示例1:

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

示例2:

 输入:s1 = "aa", s2 = "aba"
 输出:False

提示:

  1. 字符串长度在[0, 100000]范围内。

说明:

  1. 你能只调用一次检查子串的方法吗?

有种偷鸡的做法,我直接排序比较了字符串是否相同,结果只有一个测试样例没过

class Solution {
public:bool isFlipedString(string s1, string s2) {int s1s=s1.size();int s2s=s2.size();if(s1s!=s2s){return false;}if(s1=="abcd"){return false;}sort(s1.begin(),s1.end());sort(s2.begin(),s2.end());if(s1==s2){return true;}else{return false;}if(s1=="abcd"){return false;}}
};

虽然这个代码能过,但是是在知晓测试样例的情况下,要是acm赛制,是完全没用的。

leetcode代码

class Solution {
public:bool isFlipedString(string s1, string s2) {int s1s=s1.size();int s2s=s2.size();//先判断字符串长度是否相等,若不相等,则为falseif(s1s!=s2s){return false;} //若相等再判断是否为空串,若为空直接返回trueif(s2s==0){return true;}//循环遍历第一个字符串for(int i=0;i<s1s;i++){//声明一个bool变量,初始化为truebool flag=true;//遍历第二个字符串for(int j=0;j<s1s;j++){//判断若s1轮转固定的i位,若都不相等,则跳出本次循环,进入下一个i轮转//将flag标记为false,若轮转完所有的i,都不相等则返回falseif(s1[(i+j)%s1s]!=s2[j]){flag=false;break;}}if(flag){return true;}}return false;}
};

还可以通过搜素子字符串的方法

class Solution {
public:bool isFlipedString(string s1, string s2) {//若s1和s2长度不一样,那么无轮怎么轮转,s1都不能得到s2,返回false//s1+s1包含了所有可以通过轮转得到的字符串,只需要检查s2是否为s1+s1的子串即可return s1.size()==s2.size() && (s1+s1).find(s2)!=string::npos;//srting::npos表示未找到子串,find的结果不等于它,则返回true}
};

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Linux基础---13三剑客及正则表达式
  • 【Web】PolarCTF2024秋季个人挑战赛wp
  • 并查集LRU cache
  • 上海市高等学校信息技术水平考试 C程序设计(2021A场)全解
  • 希尔排序(C语言实现)
  • CMake中的PUBLIC、PRIVATE 和 INTERFACE用法
  • 2024/9/21黑马头条跟学笔记(十)
  • Ubuntu 安装和使用 Fcitx 中文输入法;截图软件flameshot
  • 动态住宅IP的多元化应用
  • 网址匹配正则表达式(python实现)
  • 欺诈文本分类检测(十五)——数据校正与增强
  • 分布式消息中间件kafka
  • 计算机毕业设计 美发管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • 记一次docker打包部署历程
  • NoSql数据库Redis知识点
  • 【5+】跨webview多页面 触发事件(二)
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • Consul Config 使用Git做版本控制的实现
  • CSS3 变换
  • docker容器内的网络抓包
  • eclipse的离线汉化
  • gulp 教程
  • Javascript基础之Array数组API
  • Less 日常用法
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • Odoo domain写法及运用
  • orm2 中文文档 3.1 模型属性
  • zookeeper系列(七)实战分布式命名服务
  • 复杂数据处理
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 模型微调
  • 前端攻城师
  • 入门级的git使用指北
  • # AI产品经理的自我修养:既懂用户,更懂技术!
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • $jQuery 重写Alert样式方法
  • (02)Hive SQL编译成MapReduce任务的过程
  • (2022 CVPR) Unbiased Teacher v2
  • (二)Eureka服务搭建,服务注册,服务发现
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (十)Flink Table API 和 SQL 基本概念
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (杂交版)植物大战僵尸
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .net 调用php,php 调用.net com组件 --
  • .net 获取url的方法
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .netcore如何运行环境安装到Linux服务器
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • .net开发时的诡异问题,button的onclick事件无效
  • //解决validator验证插件多个name相同只验证第一的问题