资讯专栏INFORMATION COLUMN

【算法】字节跳动编程题-双生词

Code4App / 588人阅读

摘要:题目描述双生词双生词是指满足如下条件的两个字符串假设两个字符串分别为和字符串长度相同将字符串收尾绕成环,再选一个位置切开,顺时针或逆时针能够得到字符串容易得到,若与为双生词,则与也为双生词给定一批仅有英文小写字母组成的字符串,询问他们之中是

题目描述

双生词

双生词是指满足如下条件的两个字符串:(假设两个字符串分别为S和S’)

</>复制代码

  1. 1. 字符串长度相同
  2. 2. 将字符串S收尾绕成环,再选一个位置切开,顺时针或逆时针能够得到字符串S’

容易得到,若s与S’为双生词,则s’与s也为双生词

给定一批仅有英文小写字母组成的字符串,询问他们之中是否存在双生词

输入描述

首先给出测试组数t,表示一共有多少组数据

对于每组数据,第一行为一个整数n,表示一共有多少个字符串。接下来n行,每行一个字符串

思路

判断str1和str2是否为双生词很简单:
str = str1+str1 //解决收尾相连的问题
比较 str2是否为str中的子串,若是,则返回true
比较 str2.reverser()是否为str中的子串,若是,返回true //解决逆时针循环的问题
否则返回false

样例

输入

</>复制代码

  1. 3
  2. 2
  3. Helloworld
  4. Hdlrowolle
  5. 2
  6. Helloworld
  7. Worldhello
  8. 2
  9. Abcde
  10. Acbde

输出

</>复制代码

  1. Yeah
  2. Yeah
  3. Sad
JavaScript实现

</>复制代码

  1. const twins = (str1,str2) => {
  2. print("str1:",str1,"str2:",str2);
  3. if(str1.length != str2.length){
  4. return false;
  5. }
  6. let str = str1+str1;
  7. print("str:",str);
  8. if(str.indexOf(str2) != -1){
  9. return true;
  10. }
  11. //let str3 = str2.reverse(); //翻转str2
  12. //字符串翻转
  13. var newstr = str2.split("").reverse().join("");
  14. print("new:",newstr);
  15. if(str.indexOf(newstr) != -1){
  16. //print(str,str2);
  17. return true;
  18. }
  19. return false;
  20. }
  21. var m = parseInt(readline());
  22. for(let i = 0; i < m; i++){
  23. var n = parseInt(readline());
  24. let arr = [];
  25. for (let j = 0; j < n; j++) {
  26. let line2 = readline();
  27. //arr.push(line2.split(""));//数组
  28. arr.push(line2);//字符串
  29. }
  30. let flag = false;
  31. find:
  32. for(let j = 0; j < n; j++){
  33. for(let k = j+1; k < n; k++){
  34. if(twins(arr[j], arr[k])){
  35. flag = true;
  36. print("true");
  37. break find;
  38. }
  39. }
  40. }
  41. if(!flag){
  42. print(false);
  43. }
  44. }

c++实现
c++实现2
Python实现

JavaScript字符串翻转

</>复制代码

  1. var newstr = str2.split("").reverse().join("");
JavaScript二维数组输入

</>复制代码

  1. var n = parseInt(readline());
  2. let arr = [];
  3. for (let j = 0; j < n; j++) {
  4. let line2 = readline();
  5. arr.push(line2.split(""));//数组
  6. //arr.push(line2);//字符串
  7. }
JavaScript字符串输入

</>复制代码

  1. var n = parseInt(readline());
  2. let arr = [];
  3. for (let j = 0; j < n; j++) {
  4. let line2 = readline();
  5. //arr.push(line2.split(""));//数组
  6. arr.push(line2);//字符串
  7. }

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/97371.html

相关文章

  • 算法字节跳动编程-认识的人

    摘要:题目描述团队在月日搬入了学清嘉创大厦,为庆祝团队的乔迁之喜,字节君决定邀请整个团队,举办一个大型团建游戏字节跳动大闯关。这个人每个人都向字节君提供了自己认识的人的名字,不包括自己。其他所有人均刻意直接或间接的认识,分在同一组。 题目描述 Bytedance Efficiency Engineering团队在8月20日搬入了学清嘉创大厦,为庆祝团队的乔迁之喜,字节君决定邀请整个EE团队,...

    zr_hebo 评论0 收藏0
  • 字节跳动Python后端开发岗,已拿offer

    摘要:今年岁,毕业之后进入一家小型的互联网公司工作,名字就不说了,算是熟知的,在这家公司呆了两年,直至今年才有了跳槽的想法。在众多大厂中,最终选择了字节跳动。这样的调整,一方面对自己学习有帮助,另一方面让自己应对面试更从容,更顺利。 ...

    JasonZhang 评论0 收藏0
  • 字节跳动上海DATA部门后端开发秋招面试经历

    摘要:讲了一下我在电力物联网项目中通过设计的文件远程升级功能。完成聊天毕业规划怎么样收到面试调查问卷等待中。。。。。 7.31 投递提前批c++客户端岗位 8.16 被转...

    Ocean 评论0 收藏0
  • 35岁以后依然被公司抢着要?4面字节跳动,完虐面试官年薪70w,图形化app开发工具

    摘要:面试后面试后及时总结,有可能下一个面试官会问你同样的问题。同时面试官也对我的未来技术发展提出了很多建议。总的来说,四面的氛围并没有想象得那么严肃,面试官也说面试得很愉快。 ...

    XGBCCC 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<