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
广告