关于#java#的问题:设计一个算法将s中所有数字字符放在前半部分,所有小写字母字符放在后半部分

设有一个顺序串s,其字符仅由数字和小写字母组成。设计一个算法将s中所有数字字符放在前半部分,所有小写字母字符放在后半部分。并给出你所设计的算法的时间和空间复杂度。

搞俩字符串分别存储数字和小写字符,再填入顺序串,复杂度都是n

将字符串转为char数组,然后遍历char数组,将数字往数组前面添加,字母往数组后面添加。
时间复杂度和空间复杂度为O(n)
代码如下:

public class Demo{
  public static void main(String[] args) {
    String str="ah12hsh22";
    char strs[]=strtoCharArray(); //转换为字符数组 
    int cout1=0,cout2=strs.length;
    char chars[]=new char[strs.length];
    for(int i=0;i<strs.length;i++){
      if(strs[i]>='0' && strs[i]<='9'){
        chars[cout1++]=strs[i];
      }else{
        chars[--cout2]=strs[i];
      }
    }
  }
}