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 次查看

开启您的职业生涯

通过完成课程获得认证

开始学习
广告