Java代码,按字母顺序打印两个字符串的公共字符


在本文中,我们将学习如何使用Java按字母顺序打印两个字符串的公共字符。该程序使用数组来计算每个字母在两个字符串中出现的频率,然后比较这些计数以识别公共字符。

问题陈述

编写一个Java程序,按字母顺序打印两个字符串的公共字符:

输入

my_str_1 = "itsasample"
my_str_2 = "thisisasample"

输出

The common characters between the two strings in alphabetical order is :
aaeilmpsst

按字母顺序打印两个字符串的公共字符的步骤

以下是按字母顺序打印两个字符串的公共字符的步骤:

  • 首先,我们将从java.iojava.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。这将只填充数组中那些公共的值。计算并打印两个数组中的最小字符数。

更新于:2024年10月15日

2K+ 次浏览

开启你的职业生涯

完成课程后获得认证

开始学习
广告