`
thrillerzw
  • 浏览: 138993 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

查找一个字符串的对称个数

    博客分类:
  • java
 
阅读更多
 /** 
    * 题目要求:
 	*用Java设计一个程序,实现一个字符串的对称个数,如字符串"effeghg",有"ff","effe","ghg"这三个对称字符,所以返回3. 
	*我实现的思路就是遍历这个字符串,
 	*先选定头位置为第一个字符,然后从最后向前遍历这个字符串,
 	*头尾两个字符相同,则取中间字符串,进行递归。
 	*递归结束后得到结果,
 	*继续将头向后推1位,然后再从字符串最后向前遍历,
 	* 如此循环,当尾等于头时,退出最外层循环,输出结果。
 	*/ 
public class FindSymmetryStr { 
    /** 
     * 找出字符串中对称的子字符串的个数 
     * @param orgStr 
     * @return 
     */ 
    public static int findSymmetryStr(String orgStr) { 
        //结果初始化 
        int count = 0; 

        //当输入字符串不为null且长度大于1时进行查找,否则直接返回0 
        if (orgStr != null && orgStr.length() > 1) { 
            //得到输入字符串的长度 
            int length= orgStr.length(); 
            //字符串的头字符索引 
            int head; 
            //字符串从后向前遍历时的"尾"字符索引,即当前字符索引 
            int tail; 
            //字符串的头字符 
            char hChar; 
            //字符串从后向前遍历时的"尾"字符 
            char tChar; 

            //从前开始遍历字符串 
            for (head = 0; head < length; head++) { 
                //取得头字符 
                hChar = orgStr.charAt(head); 
                //指向输入字符串的最后 
                tail = length- 1; 
                //当尾字符索引等于头字符索引时退出循环 
                while (tail > head) { 
                    //取得尾字符 
                	tChar = orgStr.charAt(tail); 
                    //如果头尾字符相等,则继续判断 
                    if (hChar == tChar) { 
                        //取出头尾中间的子字符串,对其进行分析 
                        String newStr = orgStr.substring(head + 1, tail); 
                        //如果此子字符串的长度大于1,则进行递归 
                        if (newStr.length() > 1) 
                            //递归得到此子字符串中对称的字符串个数 
                            count += findSymmetryStr(newStr); 
                        //如果此子字符串只有1个或0个字符,则表明原头尾字符和此单个字符组成对称字符串 
                        else 
                            count++; 
                    } 
                    
                    tail--; 
                } 
            } 
        } 

        return count; 
    } 

    //测试程序 
    public static void main(String args[]) { 
        int count = findSymmetryStr("effeghg");// 
        System.out.println("symmetry string count is : " + count); 
    } 

 

分享到:
评论

相关推荐

    对称矩阵.zip

    字符串匹配算法:字符串匹配算法用于在一个字符串(文本)中查找一个子串(模式)的出现位置。常见的字符串匹配算法包括暴力匹配、KMP算法、Boyer-Moore算法等。 这些是计算机科学中常见的算法类型,每种算法都有...

    LeetCode解题总结

    13.3 字符串的所有子回文字符串 13.4 最长公共子序列问题 13.5 字符串的编辑距离 13.6 不同路径之和 13.6.1 无障碍13.6.2 有障碍 13.7 最大矩形面积 13.8 字符串交叉组合 13.9 旋转字符串 13.10 最小路径和 13.11 ...

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

    22. 判断一个栈是否是另一个栈的弹出序列 23. 层序遍历二叉树 24. 后序遍历二叉搜索树 25. 二叉树中和为某值的路径 26. 复杂链表的复制 27. 二叉搜索树转换为双向链表 28. 打印字符串中所有字符的排列 29. ...

    剑指offer算法题Python源码带详细思路注释(68道).zip

    按之字形顺序打印二叉树,把二叉树打印成多行,把数组排成最小的数,把字符串转化成整数,包含min函数的栈,变态青蛙跳,表示数值的字符串,不用加减乘除做加法,丑数,从上往下打印二叉树,从尾到头打印链表,第一个只出现一次...

    leetcode叫数-leetcode:力扣Java主题

    最后一个单词的长度 Java 字符串 66 加一 Java 数组、数学 67 二进制求和 Java 数学、字符串 69 x 的平方根 Java 数学、二分查找 70 爬楼梯 Java 动态规划 83 删除排序链表中的重复元素 Java 链表 88 合并两个有序...

    java源码包2

     设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节  通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到...

    《数据结构》实验

    内容:1、设单链表中存放着n个字符,设计算法,判断该字符串中是否有中心对称关系。例如:xyzzyx、xyzyx都算是中心对称的字符串。 2、设计算法判断一个算术表达式的圆括号是否配对。(提示:对表达式进行扫描,遇‘...

    LeetCode:JavaScript JavaScript对LeetCode的解决方案

    atoi盛最多水的容器三数之和最接近的三数之和四数之和删除链表的倒数第 n 个节点括号生成两两交换链表中的节点两数相除在排序数组中查找元素的第一个和最后一个位置有效的数独字符串相乘字母异位词分组pow-...

    数据结构算法实现(严蔚敏版配套实现程序)

    1.1 数组和字符串 2 1.1.1 一维数组的倒置 2 范例1-1 一维数组的倒置 2 ∷相关函数:fun函数 1.1.2 一维数组应用 3 范例1-2 一维数组应用 3 1.1.3 一维数组的高级应用 5 范例1-3 一维数组的高级应用 5 1.1.4 显示...

    数据结构 严蔚敏 代码

    1.1 数组和字符串 2 1.1.1 一维数组的倒置 2 范例1-1 一维数组的倒置 2 ∷相关函数:fun函数 1.1.2 一维数组应用 3 范例1-2 一维数组应用 3 1.1.3 一维数组的高级应用 5 范例1-3 一维数组的高级应用 5 1.1.4 显示...

    数据结构(王)c元代码

    1.1 数组和字符串 2 1.1.1 一维数组的倒置 2 范例1-1 一维数组的倒置 2 ∷相关函数:fun函数 1.1.2 一维数组应用 3 范例1-2 一维数组应用 3 1.1.3 一维数组的高级应用 5 范例1-3 一维数组的高级应用 5 1.1.4 显示...

    数据结构算法实现(严蔚敏版配套实现程序)

    1.1 数组和字符串 2 1.1.1 一维数组的倒置 2 范例1-1 一维数组的倒置 2 ∷相关函数:fun函数 1.1.2 一维数组应用 3 范例1-2 一维数组应用 3 1.1.3 一维数组的高级应用 5 范例1-3 一维数组的高级应用 5 1.1.4 显示...

    c# 加密和解密相关代码

    数据的加密与解密 文件的加密与解密 第 章 加密与解密技术 第19章 加密与解密技术 829 ... i++) //遍历字符串中的每一个字符串 { string ins = c[i].ToString(); //记录遍历到的字符 string outs...

    mongoose-field-encryption:用于各个字段的简单对称加密插件

    猫鼬场加密 一个针对各个字段的简单对称加密插件。 该插件的目的是加密数据,但仍允许搜索具有字符串值的字段。 该插件依赖于Node crypto模块。 加密和解密在保存和查找过程中透明进行。 尽管此插件可用于任何类型的...

    hackerrank-python:我用Python解决HackerRank中的问题的实践

    查找字符串 字符串验证器 文字对齐 文本换行 设计师门垫 字符串格式 字母Rangoli 大写! 奴才游戏 合并工具! 套 集合介绍 对称差异 设置.add() 设置.discard()、. remove()和.pop() 设置.union()...

    EJSON是一个小型库,用于使用非对称加密来管理加密的机密。-Golang开发

    机密信息收集在一个JSON文件中,该文件中的所有字符串值均已加密。 公钥嵌入在文件中,解密器从其本地文件系统中查找相应的私钥。 ejson提供的主要好处是:秘密可以安全地存储在git repo中。 常

    Leetcode-CodewarsQuestions:Leetcode&Codewars问题

    Leetcode-Codewars问题 ...随机数组缺少编号对称树爬楼梯子集键盘行字符串III中的反向单词构造矩形加一个有效数独基本计算器II 加油站编码和解码TinyURL 查找阵列中的所有重复项替换单词两个链接列表的交点单词

    leetcode跳跃-leetcode-practise:leetcode学习算法

    【数学|字符串 】—— 14.最长公共前缀 【字符串 】—— 20.有效的括号 【栈|字符串 】—— 21.合并两个有序链表 【链表 】—— 26.删除排序数组中的重复项 【数组|双指针 】—— 27.移除元素 【数组|双指针】—— ...

    Hackerrank_Python_Domain_Solutions:Hackerrank Python域挑战的解决方案

    我对Hackerrank Python域挑战...查找字符串 字符串验证器 文字对齐 文本换行 设计师门垫 字符串格式 字母Rangoli 大写! 奴才游戏 套 集合介绍 对称差异 不知道! 设置.add() 设置.discard()、. remove()和.

    世界500强面试题.pdf

    1.3.9. 左移递减数列查找某一个数................................................................ 60 1.3.10. 对于一个整数矩阵,存在一种运算,对矩阵中任意元素加一时,需要其相 邻(上下左右)某一个元素也...

Global site tag (gtag.js) - Google Analytics