您的位置:首页 > 其它

给定字符串(ASCII码0-255)数组,请在不开辟额外空间的情况下删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个。例如:" i am a little boy.

2016-08-03 22:03 579 查看
import java.util.Scanner;

public class Test {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
while(input.hasNextLine()){
String s = input.nextLine();
FormatString3(s);
//char[] str = s.toCharArray();
//FormatString(str,str.length);
//FormatString2(str,str.length);
}

}
//使用正则表达式
public static void FormatString3(String s){
String s2 = s.trim().replaceAll("\\s+", " ");
System.out.println(s2);
}
//创建一个新的字符串接收
public static void FormatString2(char[] str,int len){
//去首尾空格
int start = 0;
while((start<len)&&(str[start]<=' ')){
start ++;
}
while((start<len)&&(str[len-1]<=' ')){
len --;
}
if(start>0||len<str.length){
for(int i=start;i<len;i++){
str[i-start] = str[i];
}
}
len = len-start;
for(int i=0;i<len;i++){
System.out.print(str[i]);
}
System.out.println();
//创建一个新的字符串接收
StringBuilder s = new StringBuilder();
for(int i=0;i<len-1;i++){
if(str[i]<=' '&&str[i+1]<=' '){
continue;
}
s.append(str[i]);
}
s.append(str[len-1]);
System.out.println(s.toString());

}
//不使用额外的空间,移动方法
public static void FormatString(char[] str,int len){
//去首尾空格
int start = 0;
while((start<len)&&(str[start]<=' ')){
start ++;
}
while((start<len)&&(str[len-1]<=' ')){
len --;
}
if(start>0||len<str.length){
for(int i=start;i<len;i++){
str[i-start] = str[i];
}
}
len = len-start;
for(int i=0;i<len;i++){
System.out.print(str[i]);
}
System.out.println();
//去首尾之间的空格
int spaceNum = 0;
for(int i = 0;i<len-1;i++){
if(str[i]<=' '&&str[i+1]<=' '){
spaceNum++;
continue;
}
if(spaceNum>0){
//向左移动spaceNum的距离
for(int j = i;j<len;j++){
str[j-spaceNum] = str[j];
}
//移动之后,重新定位
i = i - spaceNum;
len = len - spaceNum;
spaceNum = 0;
}
}
for(int i=0;i<len;i++){
System.out.print(str[i]);
}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  string 空格合并
相关文章推荐