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