给定字符串(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]); } } }
相关文章推荐
- 给定字符串(ASCII码0-255)数组,请在不开辟额外空间的情况下删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个。
- [删除字符串中多余的空格]给定字符串,删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个
- 给定字符串,删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个
- 删除字符串中多余的空格]给定字符串,删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个
- 给定字符串,删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个
- 删除字符串开始及末尾的空格,并且把数组中间的多个空格转化为一个
- 删除字符串开始和结尾空格,并将中间多个空格合并为一个空格
- 删除字符串开始及末尾的空白符,并且把数组中间的多个空格(如果有)符转化(合并)为1个
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
- 删除字符串开始及末尾的空白符,并且把数组中间的多个空格(如果有)符转化为1个
- 删除字符串开始及末尾的空白符,并且把数组中间的多个空格(如果有)符转化为1个。
- 删除字符串开始及末尾的空白符,并且把数组中间的多个空格(如果有)符转化为1个
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
- 【c语言】编写一个函数new,对n个字符开辟连续的存储空间,此函数应返回一个指针(地址),指向字符串开始的空间
- C语言将多个字符串合并为一个字符串例如:数组[a,bbb,ccc]->字符串"a,bbb,ccc"
- 删除字符串开始及末尾的空白符,并且把数组中间的多个空格(如果有)符转化为1个。
- 字符串或者数组的循环左移或右移(不开辟额外的空间存放中间值)
- 删除字符串开始及末尾的空白符,并且把数组中间的多个空格(如果有)符转化为1个
- (科大讯飞)删除字符串中的连续空格(只保留一个),O(n)时间复杂度,O(1)空间复杂度
- 删除字符串开始及末尾的空白符,并且把数组中间的多个空格(如果有)