【字符串与数组】

Q:Assume you have a method isSubstring which checks if one word is a substring of another Given two strings, s1 and s2, write code to check if s2 is a rotation of s1 using
only one call to isSubstring (i e , “waterbottle” is a rotation of “erbottlewat”)

题目:给定一个能判断一个单词是否为另一个单词的子字符串的方法,记为isSubstring。书写代码来判断S2是否能通过旋转S1得到。(只能使用一次isSubstring方法)

解答:


以waterbottle和erbottlewat为例,我们只有使用一次isSubstring的机会,但是单单从这两个字符串来看,我们找不到彼此之间的子串关系。因此,可以考虑去改变、构造(几何里的做辅助线)字符串。要判断S2是否能通过旋转S1得到,我们可以先将S1扩展成S1S1,即erbottlewat扩展成erbottlewaterbottlewat,然后再判断S2是否为S1S1的子串。当然,将S2扩展成S2S2,然后再判断S1是否为S2S2的子串是同样的道理。

代码如下所示:

int is_rotation(char* str1,char* str2){ int len1=strlen(str1); int len2=strlen(str2); if(len1!=len2) return 0; char* newStr=malloc(len1*sizeof(char)); strcpy(newStr,str1); strcat(newStr,str1); int rValue; rValue=isSubString(newStr,str2); free(newStr); return rValue; }

上面代码中的isSubString是字符串匹配算法,最著名的有KMP算法、BM算法等,其思想及其具体实现,可以查看博客里的另外两篇文章。


作者:Viidiot  微信公众号:linux-code


最新文章

  1. 第三章 Models模块属性详解
  2. [ruby on rails] 跟我学之(7)创建数据
  3. IOS第四天(5:创建备份区按钮和判断结果)
  4. 时间作为横轴的图表(morris.js)超越昨天的自己系列(8)
  5. CentOS5下配置JDK1.6+TOMCAT6
  6. zoj3640:概率(期望)dp
  7. cscope的使用
  8. SSM框架开发web项目系列(四) MyBatis之快速掌握动态SQL
  9. 【Qt编程】基于Qt的词典开发系列<六>--界面美化设计
  10. LeetCode算法题-N-ary Tree Postorder Traversal(Java实现)
  11. (60)Wangdao.com第十天_JavaScript 函数_作用域_闭包_IIFE_回调函数_eval
  12. spring mvc将对象转换为json返回的配置
  13. error: device unauthorized —— android studio 链接不上虚拟机
  14. 从零开始编写操作系统——bochs
  15. js 动态绑定鼠标事件
  16. Redmine 删除 project 中的 public 选项
  17. 解决SVN CONNOT VERIFY LOCK ON PATH NO MATCHING LOCK-TOKEN AVAILABLE
  18. Python正则表达式 学习笔记
  19. javaweb学习3——验证码
  20. 2019.04.04 第二次训练 【ACM International Collegiate Programming Contest, JUST Collegiate Programming Contest (2018)】

热门文章

  1. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(12)-实现用户异步登录和T4模板
  2. iis配置网址(主机名)
  3. word 一些有用的技巧
  4. java界面编程(8) ------ 组合框(下拉列表)
  5. Ubuntu更改hosts档
  6. 搭建及修正Hadoop1.2.1 MapReduce Pipes C++开发环境
  7. android学习8(ListView高级使用)
  8. C# ---- 串口数据YSI实例
  9. C++ AMP 介绍(两)
  10. 19.最经济app发短信的方法