class Solution { public static void main(String[] args) { Solution test=new Solution(); System.out.println(test.fun("*01*2234*4")); } public String fun(String s) { char[] ch=s.toCharArray(); if(s==null) return null; //两个参数 i代表数字的下标 j代表*的下标 //一直循环j++ i++要看条件 只有在找到*的时候 交换完毕再i++ for(int i=0,j=0;j<s.length();j++) { if(s.charAt(j)=='*') { char temp=ch[i]; ch[i]=ch[j]; ch[j]=temp; i++; } } return new String(ch); } }
上面的会变化数字的相对位置
下面不会变化数字的相对位置,从后往前遍历
class Solution { public static void main(String[] args) { Solution test=new Solution(); System.out.println(test.fun("*01*2234*4")); } public String fun(String s) { char[] ch=s.toCharArray(); if(s==null) return null; //如果要求数字的相对位置不变 需要从后往前 for(int i=s.length()-1,j=s.length()-1;i>=0;i--) { if(s.charAt(i)>='0'&&s.charAt(i)<='9') { char temp=ch[i]; ch[i]=ch[j]; ch[j]=temp; j--; } } return new String(ch); } }