设有一个顺序串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];
}
}
}
}