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+ 次瀏覽

開啟你的職業生涯

完成課程後獲得認證

開始學習
廣告