Java代码,按字母顺序打印两个字符串的公共字符
在本文中,我们将学习如何使用Java按字母顺序打印两个字符串的公共字符。该程序使用数组来计算每个字母在两个字符串中出现的频率,然后比较这些计数以识别公共字符。
问题陈述
编写一个Java程序,按字母顺序打印两个字符串的公共字符:
输入
my_str_1 = "itsasample"
my_str_2 = "thisisasample"
输出
The common characters between the two strings in alphabetical order is :
aaeilmpsst
按字母顺序打印两个字符串的公共字符的步骤
以下是按字母顺序打印两个字符串的公共字符的步骤:
- 首先,我们将从java.io和java.util包导入所有必要的类。
- 之后,我们将定义一个包含common_chars方法的类**Demo**。
- 创建两个大小为26的数组,用于跟踪每个字符串的字母频率。
- 使用for循环遍历两个字符串,用字母计数填充数组。
- 比较数组并根据它们的频率打印公共字符。
- 在主方法中,使用两个预定义的字符串调用**common_chars**。
打印两个字符串的公共字符的Java代码
以下是按字母顺序打印两个字符串的公共字符的Java代码,代码如下:
import java.io.*; import java.util.*; public class Demo { static void common_chars(String str_1, String str_2) { int[] array_1 = new int[26]; int[] array_2 = new int[26]; int str_len_1 = str_1.length(); int str_len_2 = str_2.length(); for (int i = 0; i < str_len_1; i++) array_1[str_1.charAt(i) - 'a'] += 1; for (int i = 0; i < str_len_2; i++) array_2[str_2.charAt(i) - 'a'] += 1; for (int i = 0; i < 26; i++) { if (array_1[i] != 0 && array_2[i] != 0) { for (int j = 0; j < Math.min(array_1[i], array_2[i]); j++) System.out.print(((char)(i + 'a'))); } } } public static void main(String[] args) throws IOException { String my_str_1 = "itsasample"; String my_str_2 = "thisisasample"; System.out.println("The common characters between the two strings in alphabetical order are:"); common_chars(my_str_1, my_str_2); } }
输出
The common characters between the two strings in alphabetical order is : aaeilmpsst
代码解释
名为Demo的类包含一个名为**‘common_chars’**的函数,该函数声明了两个大小为**26**(表示英语中的26个字母)的整数数组。它们的长度存储在两个不同的变量中。
遍历数组,在'a'的ASCII码与每个字符的ASCII码之差的索引处。从每个字符的ASCII值中减去字符'a'的ASCII值,然后加1。这将只填充数组中那些公共的值。计算并打印两个数组中的最小字符数。
广告