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
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP