`
thrillerzw
  • 浏览: 143874 次
  • 性别: 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); 
    } 

 

分享到:
评论

相关推荐

    统计字符串中“子字符串”的个数

    5. **Trie树(字典树)**:如果需要频繁查询多个不同的子字符串,可以先将这些子字符串构建成Trie树,然后遍历主字符串,每遇到一个子串的开头就在Trie树中查找,找到就计数。 6. **动态规划**:对于特定的问题,如...

    C++字符串查找

    - 当处理具有对称性的字符串查找问题时,Manacher's Algorithm提供了一种线性时间复杂度的解决方案,特别适合于查找字符串中的最长回文子串。 在学习和练习这些字符串查找技术时,你可以尝试编写不同类型的程序,...

    寻找字符串中最长的回文子串的长度

    在IT领域,字符串处理是计算机科学中的一个基本概念,尤其在编程语言如C++中,字符串操作被广泛应用。本问题关注的是寻找一个字符串中最长的回文子串及其长度。回文子串是指一个字符串,从前往后读和从后往前读完全...

    OJ_字符串加解密

    4. **字符串处理函数**:C语言中的`strlen()`用于获取字符串长度,`strcpy()`和`strncpy()`用于复制字符串,`strcat()`和`strncat()`用于连接字符串,`strchr()`和`strstr()`用于查找子字符串,这些函数可以辅助我们...

    字符串解密大作业

    1. **字符串处理**:理解和操作字符串,包括查找模式、替换、编码转换等。 2. **解密算法**:理解加密原理,逆向工程以找到解密方法。 3. **C++编程**:使用C++语言编写解密程序,熟悉其语法和面向对象特性。 4. **...

    字符串算法

    字符串算法是计算机科学中的一个重要领域,它涉及到对字符串(一串字符序列)进行操作和分析的各种算法。在处理文本、编程语言、数据压缩、搜索、排序等问题时,字符串算法起着至关重要的作用。这里我们将深入探讨...

    字符串处理- 单模式匹配- MP 算法与 KMP 算法.rar

    单模式匹配算法是解决字符串问题的关键技术之一,主要用于在一个大文本(主串)中查找是否存在一个已知的模式串(目标串)。MP算法(Manacher's Algorithm)和KMP算法(Knuth-Morris-Pratt Algorithm)都是高效的单...

    其他字符串相关题解1

    解决这个问题通常需要用到“串的最小表示法”,这是一种将环形字符串转化为线性形式的方法,以便找到字典序最小的子串。 4. **字符串移位**:HDOJ 3374要求找到字符串经过位移后的字典序最小和最大的字符串及其排名...

    字符串处理- 回文串相关- Manacher 算法.rar

    回文串是字符串处理中的一个重要...在实际应用中,如果需要查找多个回文子串或进行其他相关的字符串操作,Manacher算法是一个强大的工具。了解并掌握这种算法,对于提升字符串处理能力、优化相关程序性能具有重要意义。

    字符串处理- 回文串相关.rar

    回文串是字符串处理中的一个重要概念,它是指一个正读反读都能读通的字符串,比如"上海自来水来自海上"、"abccba"等。在编程领域,回文串的判断、查找和生成等操作常常被用作面试题或者算法练习,涉及到字符串的基本...

    Java实现查找当前字符串最大回文串代码分享

    这个方法使用了一个布尔变量`flag`初始化为`true`,然后遍历字符串的前半部分与后半部分进行比较。如果发现不相等的字符,`flag`被设置为`false`,表示这不是一个回文串。如果循环结束时`flag`仍为`true`,则返回`...

    字符串相关算法.rar

    1. **KMP(Knuth-Morris-Pratt)算法**:此算法用于在一个字符串中查找子串,避免了不必要的比较。它通过构建一个前缀表来确定何时需要跳过字符,提高了查找效率。理解KMP算法的关键在于理解前缀函数的计算方法。 2...

    12.【Object类、常用API】_API_

    `sort()`可以对List进行排序,`copy()`可以将一个集合的内容复制到另一个集合。 - `System`: 提供了一些系统级别的操作,如获取当前时间(`currentTimeMillis()`), 清屏(`gc()`), 读取环境变量(`getenv()`)等。 - `...

    mima.rar_单表置换密码_字符串 加密_字符串加密_简单加密_置换密码

    给定一个字符串,我们遍历每个字符,查找其在置换表中的对应字符,并用这个新字符替换原来的字符。这样,原始的可读信息就被转换成了看似无意义的密文。这个过程是可逆的,只要我们保留了相同的置换表,就可以解密回...

    C#代码整理(字符串操作、加密解密、密码生成、cookie和缓存操作)

    常用的方法有`Substring()`用于截取子字符串,`Replace()`用于替换特定字符或字符串,`Trim()`用于去除字符串两端的空白字符,`IndexOf()`和`LastIndexOf()`用于查找子字符串的位置,`Split()`和`Join()`用于拆分和...

    Chapter 5 字符串 Strings.rar_核心算法-string部分

    1. **KMP算法**(Knuth-Morris-Pratt Algorithm):KMP算法是一种用于在一个字符串(主串)中查找给定模式串的有效方法,它避免了在匹配过程中不必要的回溯。通过构造部分匹配表,KMP可以在主串中发现模式串的匹配...

    C语言课程设计 矩阵 字符串等

    `keyword.c`可能是一个关于字符串搜索或处理的程序,它可能包含了对字符串的拼接、查找、替换等操作。在C语言中,我们通常使用字符数组来表示字符串,并通过库函数如`strlen()`计算字符串长度,`strcpy()`复制字符串...

    信息学奥赛一本通提高篇 第2部分 字符串算法(提高篇) 数据点

    在信息学奥赛中,字符串算法是至关重要的一个领域,特别是在提高篇中,它涉及到的知识点更为深入且复杂。字符串算法不仅需要理解基础的数据结构和算法,还需要掌握字符串特性的运用,以及如何高效地处理文本数据。...

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

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

    字符串DES加密解密,可自定义KEY和向量IV

    总结来说,这个程序是一个基于.NET Framework 3.5的字符串加密工具,使用DES算法,并允许用户自定义8位的密钥和初始向量。由于DES的安全性较弱,这个工具更适合学习和理解加密原理,而非用于实际高安全性需求的场景...

Global site tag (gtag.js) - Google Analytics