`

用Java设计一个程序,找到一个字符串中对称字符串的个数【面试题】

 
阅读更多

题目要求:

用Java设计一个程序,实现一个字符串的对称个数,如字符串"effeghg",有"ff","effe","ghg"这三个对称字符,所以返回3.

我实现的思路就是遍历这个字符串,

先选定头位置为第一个字符,然后从最后向前遍历这个字符串,

头尾两个字符相同,则取中间字符串,进行递归。

递归结束后得到结果,

继续将头向后推1位,然后再从字符串最后向前遍历,

如此循环,当尾等于头时,退出最外层循环,输出结果。

具体实现:

  1. /**
  2. *@authorbzwm
  3. *
  4. */
  5. publicclassFindSymmetryStr{
  6. /**
  7. *找出字符串中对称的子字符串的个数
  8. *@paramorgStr
  9. *@return
  10. */
  11. publicstaticintfindSymmetryStr(StringorgStr){
  12. //结果初始化
  13. intcount=0;
  14. //当输入字符串不为null且长度大于1时进行查找,否则直接返回0
  15. if(orgStr!=null&&orgStr.length()>1){
  16. //得到输入字符串的长度
  17. intsize=orgStr.length();
  18. //字符串的头字符索引
  19. inthead;
  20. //字符串从后向前遍历时的"尾"字符索引,即当前字符索引
  21. intcurrent;
  22. //字符串的头字符
  23. charhStr;
  24. //字符串从后向前遍历时的"尾"字符
  25. charcStr;
  26. //从前开始遍历字符串
  27. for(head=0;head<size;head++){
  28. //取得头字符
  29. hStr=orgStr.charAt(head);
  30. //指向输入字符串的最后
  31. current=size-1;
  32. //当尾字符索引等于头字符索引时退出循环
  33. while(current>head){
  34. //取得尾字符
  35. cStr=orgStr.charAt(current);
  36. //如果头尾字符相等,则继续判断
  37. if(hStr==cStr){
  38. //取出头尾中间的子字符串,对其进行分析
  39. StringnewStr=orgStr.substring(head+1,current);
  40. //如果此子字符串的长度大于1,则进行递归
  41. if(newStr.length()>1)
  42. //递归得到此子字符串中对称的字符串个数
  43. count+=findSymmetryStr(newStr);
  44. //如果此子字符串只有1个或0个字符,则表明原头尾字符和此单个字符组成对称字符串
  45. else
  46. count++;
  47. //将尾字符索引向前推1位
  48. current--;
  49. }
  50. //如果头尾字符不相等,则将尾字符索引向前推1位
  51. else{
  52. current--;
  53. }
  54. }
  55. }
  56. }
  57. returncount;
  58. }
  59. //测试程序
  60. publicstaticvoidmain(Stringargs[]){
  61. intcount=findSymmetryStr("cddcbcbeffeghg");//
  62. System.out.println("symmetrystringcountis:"+count);
  63. }
  64. }
分享到:
评论

相关推荐

    IT软件开发笔试面试题.docx

    18. 子字符串个数:该题目要求编写一个函数,输出字符串中某个子字符串的个数,考察了候选人的字符串处理能力和算法设计能力。 知识点:字符串处理、哈希表、频率统计。 19. 最大连续递增数字串:该题目要求编写一...

    面试高频算法题总结-剑指Offer题解

    面试题8:二叉树的下一个节点 面试题9:用两个栈实现队列 面试题10:裴波那契数列 面试题11:旋转数组的最小数字 面试题12:矩阵中的路径 面试题13:机器人的运动范围 面试题14:剪绳子 面试题15:二进制中1的个数 ...

    前端大厂最新面试题-算法.docx

    * 判断一个字符串是否为回文字符串? * 实现一个累加函数的功能。 * 使用 reduce 方法实现 forEach、map、filter。 * 设计一个简单的任务队列,要求分别在 1,3,4 秒后打印出 "1", "2", "3"。 * 如何查找一篇英文文章...

    《剑指Offer》Java代码(高清带目录) (1).pdf

    10. 二进制中1的个数:主要考察位运算的技巧,以及如何在不使用循环的情况下计算一个整数二进制表示中1的个数。 11. 数值的整数次方:涉及到数学运算和数值计算的知识,需要考虑大数运算以及溢出问题。 12. 求1到...

    《剑指Offer》题目及代码.pdf

    54. 表示数值的字符串:需要判断一个字符串是否符合表示数值的标准,如是否包含数字、小数点、正负号等。 55. 字符流中第一个不重复的字符:通过构建字符计数器,可以快速找出字符流中的第一个只出现一次的字符。 ...

    程序员有趣的面试智力题及答案.pdf,这是一份不错的文件

    用线性时间和常数附加空间将一个长度为 n 的字符串向左循环移动 m 位(例如,"abcdefg"移动 3 位就变成了"defgabc")。 答案:把字符串切成长为 m 和 n-m 的两半。将这两个部分分别逆序,再对整个字符串逆序。 ...

    华为机试题目总结

    20. 判断回文:考察对字符串对称性的判断。 21. 判断字符串回文:同上,是另一个形式的回文判断问题。 22. 求字符串中最大回文子串:考察对字符串中回文子串搜索算法的实现。 23. 找出^n的数:涉及数学的幂运算和...

    腾讯校园招聘笔试题技术类C语言.pdf

    10. **判断字符串是否是另一个字符串的子串**: - 使用滑动窗口或KMP算法(Knuth-Morris-Pratt算法),检查目标字符串是否能被源字符串中的某个连续子序列覆盖。 这些知识点都是C语言编程中常见的问题,理解和掌握...

    前端大厂最新面试题-leetcode.docx

    本资源为前端大厂最新面试题汇总,涵盖了 LeetCode 中的多种算法题目,包括栈、队列、排序、位运算、树、递归等。每个题目都提供了思路和实现的链接,可以帮助开发者更好地理解和掌握算法基础知识。 1. 栈和队列 ...

    javalruleetcode-play-leetcode:用程序解决leetcode的算法问题

    表示数值的字符串 面试题21 调整数组顺序使奇数位于偶数前面 面试题22 链表中倒数第k个节点 面试题24 反转链表 面试题25 合并两个排序的链表 面试题26 树的子结构 面试题27 二叉树的镜像 面试题28 对称的二叉树 面试...

    剑指Offer---Java版代码

    3. 树和图:如重建二叉树,二叉树的下一个结点,用两个栈实现队列,矩阵中的路径,二叉树的镜像,对称的二叉树等。 4. 栈和队列:例如实现包含min函数的栈,栈的压入、弹出序列等。 5. 链表:包括链表中倒数第K个...

    世界500强面试题.pdf

    1.3.6. 在一个字符串中找到第一个只出现一次的字符。如输入 abaccdeff,则输出 b 52 1.3.7. n 个数字(0,1,…,n-1)形成一个圆圈 .................................................. 53 1.3.8. 定义 Fibonacci ...

Global site tag (gtag.js) - Google Analytics