用于大小写特定排序的 Java 程序
假设您有一个包含大写和小写字符的字符串。我们必须按大小写特定顺序对给定的字符串进行排序,这意味着如果给定字符串中的第 i 个位置有大写字母,则新排序的字符串在该位置必须有大写字母,小写字母也是如此。此外,小写字母和大写字母将分别按顺序排序。
在本文中,我们将尝试找到给定问题的解决方案。首先,让我们通过一个例子来理解给定的问题,以便更好地理解。
示例
String st = "KadbHFGtvc";
假设我们有上述字符串。然后,排序后的字符串将是 −
排序后的字符串:"FabcGHKdtv"
您可以看到原始字符串中的第一个位置有一个大写字母,新排序字符串的第一个字母也有一个大写字母。第 2 到第 4 个字母是小写字母,因此新字符串也有小写字母,但以排序的方式。其他位置的字母也是如此。您可以看到大写和小写字母都是单独排序的。
特定于案例的排序程序
让我们讨论一下我们将遵循的解决这个问题的方法。
算法
步骤 1 - 首先创建一个类"Case",在该类中我们将定义一个名为"sortCase()"的方法,其返回类型为 void,以及一个字符串类型的参数"st"。
步骤 2 - 在 sortCase() 方法中,我们将给定的字符串转换为字符数组并将其存储在"chs[]"中。然后,我们将使用内置方法"Arrays.sort()"对该数组进行排序。此时,在新排序的数组中,以"A"到"Z"开头的大写字母排在第一位,然后是小写字母"a"到"z"。
步骤 3 - 接下来,声明并用 -1 初始化两个整数变量"caseUp"和"caseLW",分别存储大写和小写字符。
步骤 4 - 继续创建一个 if 块来检查数组"chs[]"中的第一个元素是否为大写字母。如果是,则将变量"caseUp"设置为 0。
步骤 5 - 创建一个 while 循环,运行至数组"chs[]"的大小。在这个循环中,我们创建另一个 if 块来获取小写字符并将其存储在'caseLw'中。
步骤 6 - 我们知道字符串在 Java 中是不可变的,因此我们需要创建一个 StringBuffer 类的对象'new_st'来存储新更新的字符串。
步骤 7 - 现在创建一个 for 循环,它将运行到给定字符串'st'的大小。在这个循环中,我们将定义一个 if-else 块来比较字符串'st'的大写和小写字符与数组'chs[]'的位置。使用 if 块,我们将从数组'chs[]'中获取小写字符并附加到'new_st'。在 else 块中,我们将获取大写字符并将其附加到"new_st"。
步骤 8 - 在 main 方法中,创建类"Case"的对象"obj"以调用方法"sortCase"。
示例
import java.util.*; public class Case { public void sortCase(String st) { // 将字符串转换为字符数组 char chs[] = st.toCharArray(); Arrays.sort(chs); // 对字符数组进行排序 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(); // 对象创建 obj.sortCase(st); // 使用带有参数的对象调用方法 } }
输出
The given String: KadbHFGtvc The new String after sorting: FabcGHKdtv
结论
在本文中,我们讨论了一个 Java 程序来解决给定的问题。我们使用了 Java 的 String、字符数组和 StringBuffer 类的概念。