`
lovnet
  • 浏览: 6812338 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

java算法:字符串

 
阅读更多

java算法:字符串

在C语言和其他语言中,串指的是长度变化的字符数组,有一个起始点和一个标识串结束的终止符。在Java中,串是具有内嵌语言支持的高级抽象结构,它的表示是隐藏的。

串是具有价值的数据结构,因为一些计算方面的应用会应用到文本数据,可以直接使用串来表示,可以直接、有效地访问内存字节,而内存字节对应着串中的字符。即,大多数情况下,串抽象结构与应用的需求相匹配,并能充分利用机器的能力。

例一:串查找

Java代码 复制代码
  1. publicstaticintcountMatches(Stringpattern,Stringsource){
  2. intcnt=0;
  3. intM=pattern.length();
  4. intN=source.length();
  5. if(M>N){
  6. return0;
  7. }
  8. for(inti=0;i<N;i++){
  9. intj;
  10. for(j=0;j<M;j++){
  11. if(i+j<N){
  12. if(source.charAt(i+j)!=pattern.charAt(j)){
  13. break;
  14. }
  15. }else{
  16. break;
  17. }
  18. }
  19. if(j==pattern.length()){
  20. cnt++;
  21. }
  22. }
  23. returncnt;
  24. }

串的查找,它所花的时间与串的长度成正比。

如果source足够长,那么这段代码运行速度变慢,效率低下,这类问题可称为性能臭虫。因为经验验证程序代码的正确性,但是运行起来并不是我们所期望的。因此在研究有效算法之前,必须消除这类性能错误。

例二:串处理

Java代码 复制代码
  1. publicstaticStringsqueeze(Strings){
  2. char[]a=s.toCharArray();
  3. intN=1;
  4. for(inti=1;i<a.length;i++){
  5. a[N]=a[i];
  6. if(a[N]!=''){
  7. N++;
  8. }elseif(a[N-1]!=''){
  9. N++;
  10. }
  11. }
  12. returnnewString(a,0,N);
  13. }

返回一个串,除了把串中的连续空白符替换成单个空白符,其它与原串相同。

由于串是变化的,因此串的内存分配要比链表的内存分配难得多;但java系统再一次考虑了所有细节。事实上,一个为串预留空间的一般机制与所有的java对象所需要的一般内存分配机制是差不多的。通常当我们使用串时,串的内存分配问题并不像串第一次出现时那么重要,因为我们经常使用的是串的引用,而不是字符串本身。

分享到:
评论

相关推荐

    算法与数据结构:字符串

    字符串在许多编程语言中都有专门的数据类型来表示,例如Python中的str、Java中的String、C++中的std::string等。字符串类通常包含以下属性和方法: 1. **属性**: - 长度:表示字符串中字符的数量。 - 内容:存储...

    Java 推荐系统 字符串 余弦相似度 算法

    根据给定的文件信息,本文将详细介绍如何使用Java实现基于字符串的余弦相似度算法,并应用于推荐系统中。 ### 一、引言 在推荐系统领域,为了衡量两个字符串之间的相似性,通常会采用多种算法,其中余弦相似度算法...

    LZ78算法实现对任意字符串的压缩与解压

    6. 恢复原始字符串:将解压后的二进制字符串转换回原来的字符形式,即完成解压。 在实现过程中,为了优化性能,可以考虑以下几点: - 使用合适的数据结构:字典的选择直接影响查找效率,哈希表通常提供O(1)的查找...

    经典算法--字符串的压缩

    关于经典算法--压缩字符串(将字符串内连续重复出现的字符进行压缩),个人的想法

    Java获取随机字符串

    ### Java 获取随机字符串 在Java开发中,生成随机字符串是一个非常常见的需求,尤其是在密码学、安全验证、数据加密等场景中。本文将详细介绍如何在Java中生成随机字符串,并且会结合给定的部分代码示例进行深入...

    数据与算法课件:5 字符串.pdf

    在高级语言中,如C、C++、Java和Python等,字符串通常有内置的数据类型和库函数来支持这些操作,使得程序员能方便地处理字符串。了解并熟练掌握字符串的特性和操作对于理解和解决问题至关重要,特别是在文本处理、...

    字符串相似度算法 字符串相似度算法 字符串相似度算法

    字符串相似度算法 字符串相似度算法是一种衡量两个字符串之间相似度的方法,广泛应用于自然语言处理、数据挖掘、机器学习等领域。在本文中,我们将讨论一种常用的字符串相似度算法:Levenshtein Distance。 什么是...

    java 字符串分割

    Java 字符串分割 Java 字符串分割是 Java 编程...同时,我们也学习了相关的知识点,例如字符串分割的基本概念、Java 中的字符串分割方法、Java 中的字符串分割算法、Java 中的 ArrayList 集合和 Java 中的倒序输出。

    java算法之字符串处理

    在实际的开发工作中,对字符串的处理是最常见的编程任务。本题目即是要求程序对用户输入的串进行处理。具体规则如下: 1. 把每个单词的首字母变为大写。 2. 把数字与字母之间用下划线字符(_)分开,使得更清晰 3. ...

    Java检索字符串中是否存在某字符

    标题提到的"Java检索字符串中是否存在某字符",实际上涉及到字符串的查找算法。这里主要讨论的是KMP(Knuth-Morris-Pratt)算法,这是一种高效的字符串匹配算法,适用于在主字符串中查找目标子串是否存在。 KMP算法...

    java 用递归实现字符串反转

    ### Java使用递归实现字符串反转 在Java编程语言中,递归是一种常用的...需要注意的是,在实际开发中,对于非常大的字符串进行递归反转可能会导致栈溢出错误,因此在应用递归算法时也需要考虑其适用范围和可能的风险。

    JAVA可逆带秘钥字符串加密算法

    本文将深入探讨“JAVA可逆带秘钥字符串加密算法”,这是一种允许数据在加密后仍能通过正确的密钥解密回原始形式的加密技术。 在Java中,最常见的可逆加密算法包括DES(Data Encryption Standard)、3DES(Triple ...

    java 字符串a-z排序

    System.out.println("原始字符串:" + originalStr); System.out.println("排序后字符串:" + sortedStr); } } ``` 运行这段代码,它会打印出原始字符串和按字母顺序排序后的字符串。需要注意的是,这个示例会将...

    使用java自带des加密算法实现文件加密和字符串加密

    主要介绍了使用java自带des加密算法实现文件加密和字符串加密的示例,需要的朋友可以参考下

    输入一个字符串,输出所有该字符串的组合情况

    - `TestPermute.java`:可能实现了字符串的全排列算法,并命名为`permute`方法。 - `Test2.java`:可能是对另一种算法的实现,比如改进或优化过的版本。 - `Test.java`:通常用于编写单元测试,检验各种输入情况下,...

    Java实现字符串的匹配.doc

    本文介绍了如何使用 Java 实现字符串匹配,并且提供了基于素数乘积的算法实现。该算法的时间复杂度为 O(m+n),可以有效地实现字符串匹配操作。在实际应用中,可以根据需要选择合适的算法和数据结构来实现字符串匹配...

    java中截取带汉字的字符串

    3. **性能考虑**:对于非常大的字符串,频繁调用`substring`方法可能会导致性能下降,可以考虑优化算法减少不必要的字符串复制操作。 通过以上方法,我们可以在Java中有效地处理包含中文字符的字符串截取问题,避免...

    字符串查找KMP算法

    Morris和 Vaughan Pratt三位学者在1970年代提出的,它是一种高效的字符串匹配算法,能够有效地避免不必要的字符比较,从而提高查找效率。 KMP算法的核心思想是利用已知的模式串(要查找的字符串)构建一个部分匹配...

    Java随机字符串生成器,可用于生成随机密码,密约等场景,支持字符范围配置(如只允许数字,只允许字母,只允许数字字母,特殊字符等混合配置)

    Java随机字符串生成器,可用于生成随机密码,加密算法密约(AES,RSA等)等场景,支持可选字符范围配置(如只允许数字,只允许字母,只允许数字字母,特殊字符等混合配置),即在选择的字符范围内去实现随机字符串...

Global site tag (gtag.js) - Google Analytics