Java 程式用於特定大小寫排序


假設您有一個包含大寫和小寫字元的字串。我們需要按特定大小寫順序對該字串進行排序,這意味著如果給定字串中的第 i 個位置是大寫字母,則新排序的字串在該位置必須是大寫字母,小寫字母也一樣。此外,小寫和大寫字母將分別按排序順序排列。

在本文中,我們將嘗試找到給定問題的解決方案。首先,讓我們透過一個示例來理解給定的問題,以便更好地理解。

示例場景

Input: String st = "KadbHFGtvc";
Output: Sorted string = "FabcGHKdtv"

您可以看到,原始字串中的第一個位置是大寫字母,並且新排序字串的第一個字母也是大寫字母。第 2 到第 4 個字母是小寫字母,因此新字串也包含小寫字母,但以排序的方式。其他位置的字母也是如此。大寫和小寫字母分別排序。

特定大小寫排序程式

讓我們討論一下我們將為這個問題採用的方法 -

  • 步驟 1 - 首先,將給定的字串轉換為字元陣列,並使用內建方法Arrays.sort() 對該陣列進行排序。

  • 步驟 2 - 使用 if 和 while 迴圈獲取小寫和大寫字元,並將它們分別儲存。

  • 步驟 3 - 接下來,建立StringBuffer 類 的例項以儲存更新後的字串。

  • 步驟 4 - 然後,在 for 迴圈內使用 if-else 塊比較字串的大寫和小寫字元的位置,並將它們追加到 StringBuffer 類的物件中。

字串在 Java 中是不可變的,因此我們需要 StringBuffer 類來更新它。

示例

以下示例顯示瞭如何在Java 程式語言中執行特定大小寫排序。

import java.util.*;
public class Case {
   public void sortCase(String st) {
      // converting string into character array
      char chs[] = st.toCharArray(); 
      Arrays.sort(chs); 
      // sorting the character array
      int caseUp = -1;
      int caseLw = -1;
      if(chs[0] <= 'Z') {
         caseUp = 0;
      }
      int i = 0;
      while( i < chs.length) {
         if(chs[i] >= 'Z') {
            caseLw = i;
            break;
         }
         i++;
      }
      StringBuffer new_st = new StringBuffer();
      for(int j = 0; j < st.length(); j++) {
         if(st.charAt(j) >= 'Z') {
            new_st.append(chs[caseLw]);
            caseLw += 1;
         } else {
            new_st.append(chs[caseUp]);
            caseUp += 1;
         }
      }
      System.out.print("The new String after sorting: " + new_st.toString());
   }
   public static void main(String[] args) {
      String st = "KadbHFGtvc";
      System.out.println("The given String: " + st);
      Case obj = new Case(); 
      // Object creation
      obj.sortCase(st); 
      // calling the method using object with an argument
   }
}

執行此程式碼後,它將生成以下結果 -

The given String: KadbHFGtvc
The new String after sorting: FabcGHKdtv

更新於: 2024年8月1日

661 次檢視

開啟您的職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.