首页 > Java > java教程 > 正文

检查字符串中两个单词出现次数是否相等(无循环方法)

花韻仙語
发布: 2025-08-29 15:37:34
原创
146人浏览过

检查字符串中两个单词出现次数是否相等(无循环方法)

本文将介绍一种在 Java 中,无需使用循环即可判断字符串中两个指定单词出现次数是否相等的方法。该方法依赖于 Java 9 引入的正则表达式匹配器的新特性,能以简洁高效的方式完成此任务。

使用正则表达式统计单词出现次数

Java 9 及更高版本中,java.util.regex.Matcher 类提供了一个 results() 方法,该方法返回一个 Stream<MatchResult> 对象,可以用于统计匹配到的结果数量。结合正则表达式,我们可以轻松地统计字符串中特定单词出现的次数。

以下是一个示例代码:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class CatsDogsCounter {

    public static boolean catsDogs(String s) {
        Pattern pCat = Pattern.compile("cat");
        Pattern pDog = Pattern.compile("dog");
        Matcher mCat = pCat.matcher(s);
        Matcher mDog = pDog.matcher(s);
        return (mCat.results().count() == mDog.results().count());
    }

    public static void main(String[] args) {
        System.out.println(catsDogs("catdog")); // => true
        System.out.println(catsDogs("catcat")); // => false
        System.out.println(catsDogs("1cat1cadodog")); // => true
    }
}
登录后复制

代码解释:

无涯·问知
无涯·问知

无涯·问知,是一款基于星环大模型底座,结合个人知识库、企业知识库、法律法规、财经等多种知识源的企业级垂直领域问答产品

无涯·问知 40
查看详情 无涯·问知
  1. 导入必要的类: 导入 java.util.regex.Matcher 和 java.util.regex.Pattern 类,用于正则表达式的匹配。
  2. 创建 Pattern 对象: 使用 Pattern.compile() 方法创建两个 Pattern 对象,分别用于匹配 "cat" 和 "dog" 单词。
  3. 创建 Matcher 对象: 使用 Pattern.matcher() 方法创建两个 Matcher 对象,将 Pattern 对象应用于输入的字符串 s。
  4. 统计匹配次数: 使用 Matcher.results().count() 方法分别统计 "cat" 和 "dog" 在字符串中出现的次数。results() 方法返回一个 Stream<MatchResult>,count() 方法统计流中的元素数量。
  5. 比较次数: 比较两个单词出现的次数是否相等,如果相等则返回 true,否则返回 false。

运行结果:

上述代码的运行结果与注释中的预期一致。

注意事项

  • Java 版本要求: 此方法依赖于 Java 9 及更高版本。如果使用较低版本的 Java,则需要寻找其他解决方案。
  • 性能考虑: 对于非常大的字符串,正则表达式的匹配可能会影响性能。在性能敏感的场景中,建议进行性能测试和优化。
  • 单词定义: 上述代码将 "cat" 和 "dog" 作为完整的单词进行匹配。如果需要匹配 "catdog" 中的 "cat" 和 "dog",则需要修改正则表达式。 例如,如果你的字符串是 mycat,上述代码会认为不包含 cat。
  • 大小写敏感: 默认情况下,正则表达式匹配是大小写敏感的。如果需要进行大小写不敏感的匹配,可以在创建 Pattern 对象时使用 Pattern.CASE_INSENSITIVE 标志。例如:Pattern.compile("cat", Pattern.CASE_INSENSITIVE)。

总结

本文介绍了一种使用 Java 9+ 的正则表达式特性,在不使用循环的情况下,判断字符串中两个单词出现次数是否相等的方法。该方法简洁高效,易于理解和维护。通过使用 Pattern 和 Matcher 类,以及 Matcher.results().count() 方法,可以轻松地完成此任务。同时,需要注意 Java 版本要求、性能考虑、单词定义和大小写敏感等问题。

以上就是检查字符串中两个单词出现次数是否相等(无循环方法)的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号