Java 程序计算每个字符的出现次数2024年12月8日 | 7 分钟阅读 在本节中,我们将讨论如何计算字符串中字符的频率。例如,考虑单词Javatpoint。在给定的字符串中,字母 j 的频率是 1,a 是 2,v 是 1,t- 是 2,p 是 1,o 是 1,i 是 1,n 是 1。我们将通过不同的方法使用 Java 程序来实现这一点。 有许多解决方案可以计算每个字符的出现次数,其中一些是:
使用朴素方法这是计算每个字符出现次数的最简单方法。 CountOccuranceOfChar1.java 输出 The occurrence of P is: 1 The occurrence of n is: 4 The occurrence of e is: 1 The occurrence of u is: 2 The occurrence of m is: 2 The occurrence of o is: 9 The occurrence of l is: 3 The occurrence of t is: 1 The occurrence of r is: 2 The occurrence of a is: 2 The occurrence of i is: 6 The occurrence of c is: 6 The occurrence of s is: 4 The occurrence of p is: 1 The occurrence of v is: 1 使用计数器数组在下面的 Java 程序中,我们使用了计数器数组来计算字符串中每个字符的出现次数。我们定义了一个 for 循环,该循环会遍历给定的字符串,并根据字符在索引处将计数器变量加 1。然后,我们再次遍历计数器数组,并打印字符和频率(如果 counter[i] 不为 0)。 CountOccuranceOfChar1.java 输出 Please enter a string: javatpoint a --> 2 i --> 1 j --> 1 n --> 1 o --> 1 p --> 1 t --> 2 v --> 1 使用 Java HashMap在下面的 Java 程序中,我们使用了 Java HashMap 来计算给定字符串中每个字符的出现次数。我们知道 HashMap 存储键值对,并且不包含重复键。该程序将字符存储为键,将字符的出现次数存储为值。 首先,我们将给定的字符串转换为字符数组,然后逐个遍历字符数组。在 HashMap 中更新计数。之后,对于每个字符,我们需要验证该键是否已存在于 HashMap 中。如果存在,则增加计数变量,否则将其作为新键添加到 map 中,并将初始值设置为 1。 CountOccuranceOfChar2.java 输出 {e=1, g=2, l=1, o=2} 使用 Java 8在下面的 Java 程序中,我们使用了 Java 8 的功能。首先,我们初始化了一个要计算字符出现次数的字符串。然后,我们创建了一个 Java Map<> 的实例。我们执行了各种中间操作来获取字符的出现次数。 首先,使用 String.split() 方法将给定的字符串分割成数组。然后,Arrays.stream() 方法返回传入数组的流。 第二个中间操作是将字符串转换为小写字母。为此,我们使用了 Stream.map() 方法,该方法返回一个流,其中包含将给定函数应用于此流的元素的结果。 collect() 函数用于执行可变归约操作并连接列表元素。Collectors.groupingBy() 方法返回一个 Collector,它实现了对类型为 T 的输入元素的级联“分组”操作。 为了计算元素,我们使用了 Collectors 类的 counting() 方法。该方法返回一个接受类型为 T 的元素的 Collector。它计算输入元素的数量,如果没有元素,则结果为 0。 CountOccuranceOfChar3.java 输出 {c=2, o=2, m=2, u=1, n=2, i=2, a=1, t=1} 让我们看看相同的另一个逻辑。 下面的 Java 程序逻辑与上面的程序相同,除了某些内容。在下面的 Java 程序中,我们使用了 Java Pattern 类。 首先,我们调用 compile() 方法,该方法将给定的正则表达式编译成一个模式。然后,我们调用 matcher() 函数,该函数创建一个匹配器(匹配给定输入与此模式)。 最后,我们创建了一个 Map 对象,计算存储在 map 中的元素。计数后,使用 forEach() 循环遍历 map。该解决方案适用于 Java 8 或更高版本。 CountOccuranceOfChar4.java 输出 m = 1 times o = 3 times n = 1 times p = 1 times l = 1 times y = 1 times Java 程序计算每个字符出现次数选择题1. 在 Java 中,当输入规模较大且内存效率至关重要时,哪种方法最适合计算字符串中字符的出现次数?
答案:B 解释:使用计数器数组(大小为 256 的 ASCII 字符的 int 数组)是提供的选项中最节省内存的方法,因为它直接将每个字符映射到其 ASCII 值并在该索引处递增计数。 2. 与计数器数组相比,使用 Java HashMap 在计算字符串中字符出现次数方面提供了什么优势?
答案:B 解释:与仅限于 ASCII 字符的计数器数组不同,Java 中的 HashMap 可以处理任何 Unicode 字符,使其可用于各种字符集和语言。 3. 在以下哪种情况下,使用 Java 8 Stream API 计算字符串中字符的出现次数可能不太合适?
答案:B 解释:与数组或 HashMap 等简单数据结构相比,Java 8 Stream API 会引入开销。它对于复杂的操作或大型数据集很有用,但对于小型、简单的任务来说可能有点过度。 4. 在计算字符串中字符出现次数的场景中,其中需要保留字符顺序,最合适的数据结构是什么?
答案:C 解释:LinkedHashMap 维护键的插入顺序,使其适用于需要保留字符串中字符首次出现顺序的任务。 5. 在 Java 中使用计数器数组计算字符出现次数有什么潜在的缺点?
答案:D 解释:计数器数组会为所有可能的 ASCII 字符(256 个槽)分配内存,而不管它们是否出现在字符串中,如果许多槽保持未使用,这可能会导致内存使用效率低下。 下一个主题Java 技术列表 |
Java 是一种通用且强大的编程语言,以其健壮性和灵活性而闻名。使 Java 成为开发者热门选择的众多特性之一是动态初始化。动态初始化允许您在运行时初始化变量和对象,为您提供更大的...
阅读9分钟
Java 是一种面向对象的编程语言,它允许开发人员创建复杂的软件系统。Java 的关键特性之一是继承,它允许类从其他类继承属性和方法。在 Java 中,一个类只能扩展一个父类……
阅读 4 分钟
该接口允许我们异步执行线程上的任务。它存在于 java.util.concurrent 包中。ExecutorService 有助于维护线程池并为它们分配任务。它还提供在有任务排队到……的便利。
阅读 10 分钟
XOR 树是一种二叉树,其中每个节点的值是其子树中所有值(包括自身)的 XOR。将给定的二叉树转换为 XOR 树需要进行后序遍历,从子节点向上计算每个节点的值的 XOR...
阅读 10 分钟
具有边框和标题的顶层窗口称为 Frame 类。作为默认布局管理器,它使用 BorderLayout。java.awt.Frame 组件是一个 Windows 图形系统组件,就像典型的 GUI 窗口一样,包含边框和标题栏。默认组件...
阅读 6 分钟
在 Java 编程的世界中,克隆在创建项目的相同副本方面起着关键作用。它提供了一种复制项目状态的机制,使开发人员可以在不影响原始项目的情况下使用副本。Java 提供了几种实现克隆的方法,...
5 分钟阅读
生成符合特定规则的数字序列总是很有趣的,并且限制相邻位置数字之间的差异会使这个问题更加引人入胜。在本文中,我们将了解如何生成所有 N 位数字,使得数字的差异...
5 分钟阅读
在编程世界中,处理大数字是很常见的。当涉及到处理海量数值时,Java 提供了一个名为 BigInteger 的强大类。在本节中,我们将探讨如何在 Java 中将字符串转换为 BigInteger 对象,从而使我们能够...
阅读 2 分钟
Java 中的实时聊天应用程序是指能够让多个用户同时向其他人发送消息并接收其消息的能力。此类应用程序通常采用客户端-服务器系统,其中服务器处理客户端之间的通信。要创建基本的聊天应用程序,...
7 分钟阅读
Java 和 Bastar,虽然在它们的性质和目的上相去甚远,但它们本身都是引人入胜的实体。一个是广泛使用的编程语言,而另一个是指印度一个文化底蕴丰富的地区。在本节中,我们将讨论...
阅读 3 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India