思路:两个指针,分别找到前面第一个不为*的位置和最后连续*开始的地方。
然后在遍历一遍。下面两种方法都不是最优的,只是个人为了测试写的。
更好的方法是得到了两个位置,直接从头到尾在遍历一遍数组就ok。
public static void main(String args[])
Scanner in=new Scanner(System.in);
String input=in.nextLine();
System.out.println(input.substring(0,input.length()));
String result;
int length=input.length();
if(length<=0) return;
int start=0;
int end=length-1;
String pre=”“;
String post=”“;
String str=”“;
System.out.println(“end:”+end);
while(input.charAt(start)==’*’) start++ ;
while(input.charAt(end)==’*’) end–;
System.out.println(start+”“+end);
if(start>end) result=input;
else if(start==0){pre=”“;}
else {pre=input.substring(0,start–);}
if(end==length-1){post=”“;}
else {
post=input.substring(end++, length–);
}
str=input.substring(start, end+1).replace(“*”, “”);
result=pre+str+post;
System.out.println("result:"+result);
}
*/
/* //正则表达式实现方法
public static void main(String args[]){
Scanner in=new Scanner(System.in);
String input=in.next();
if(input==null) return ;
Pattern r = Pattern.compile(“(\**)([^].[^])(\*)”);
Matcher ma = r.matcher(input);
ma.matches();
String group1=ma.group(1);
String group2=ma.group(2);
String group3=ma.group(3);
String mid=group2.replaceAll("\\**", "");
String result=new StringBuilder(group1).append(mid).append(group3).toString();
System.out.print(result);
}