将字符串中连续的多个空格替换成一个空格

一,问题描述:

给定一个字符串,将字符串中连续的多个空格替换成一个空格。

如:"Hello   World I      come from china"----->"Hello World I come from china"

二,思路:

逐个字符扫描字符串,遇到连续多个空格时,只添加第一个空格。遇到非空格字符时,添加该字符。使用StringBuilder的add()方法添加字符。

需要一个boolean 变量指示是否是第一个空格。当遇到空格且该空格是第一个空格时,需要 添加到StringBuilder

如果遇到非空格字符,需要添加到StringBuilder并将boolean 重置为"不是第一个空格"

若要考虑字符串开头或结尾有空格的情形,可先用 String.trim()删除开头和结尾空格。

三,代码如下:

 1 public class ReplaceWithSingleCharacter {
 2
 3     public static void main(String[] args) {
 4         String r = repaceWhiteSapce("Hello   world I  come from      china");
 5         System.out.println(r);
 6     }
 7     public static String repaceWhiteSapce(String original){
 8         StringBuilder sb = new StringBuilder();
 9         boolean isFirstSpace = false;//标记是否是第一个空格
10
11 //        original = original.trim();//如果考虑开头和结尾有空格的情形
12
13         char c;
14         for(int i = 0; i < original.length(); i++){
15             c = original.charAt(i);
16             if(c == ‘ ‘ || c == ‘\t‘)//遇到空格字符时,先判断是不是第一个空格字符
17             {
18                 if(!isFirstSpace)
19                     {
20                         sb.append(c);
21                         isFirstSpace = true;
22                     }
23             }
24             else{//遇到非空格字符时
25                 sb.append(c);
26                 isFirstSpace = false;
27             }
28         }
29         return sb.toString();
30     }
31 }
时间: 2024-11-05 14:37:18

将字符串中连续的多个空格替换成一个空格的相关文章

合并字符串中连续的多个空格的C代码实现

1.问题描述 将某一字符串中连续出现的多个空格合并为一个空格,如果合并之后的字符串的首尾有空格,则将其去掉. 例如," This is a string! "是一个包含多个空格的字符串,要求其变成"This is a string!"的形式. 2.C代码实现 /********************************************************************** * 版权所有 (C)2015, Zhou Zhaoxiong. *

删除一个字符串中连续超过一次的空格

问题 删除一个字符串中连续超过一次的空格. 解决(Python) #! /usr/bin/env python #coding:utf-8 def del_space(string): split_string = string.split(" ") #以空格为分割,生成list,list中如果含有空格,则该空格是连续空格中的后一个 string_list = [i for i in split_string if i!=""] #去掉空格,生成list resul

C# 把字符串中间的多个连续的空格转化成一个空格

今天在弄帮客户将txt文件中的信息导入到数据库中,遇到了这个问题.因为客户的txt文件中两个字符串之间的空格数量不确定,没有办法使用split函数来分割,最后想到的办法是,将连续的空格转成一个空格,然后使用split分割,这样就好办了. 这里使用的原理是:使用正则表达式,所以文件要引用 using System.Text.RegularExpressions;(鼠标移到代码上去,在代码的顶部会出现四个图标,第一个是查看源代码,第二个是复制代码,第三个是打印代码,第四个是帮助)假设字符串的内容是s

字符串中连续出现最多的子串 &amp; 字符串中最长重复子串

字符串中连续出现最多的子串 & 字符串中最长重复子串 字符串中连续出现最多的子串 & 字符串中最长重复子串,这两个问题都可以用后缀数组来表示,至于后缀数组可以参考编程珠玑P156:后缀数组就是定义一个数组指针,分别指向字符串中的对应位置,如下: a b c a b c a b c d e .substr[0] b c a b c a b c d e ....substr[1] c a b c a b c d e .......substr[2] a b c a b c d e ......

求一个字符串中连续出现次数最多的子串

解题思路 例如字符串"abababc",最多连续出现的为ab,连续出现三次.要和求一个字符串中的最长重复子串区分开来,还是上面的字符串,那么最长的重复子串为abab.两个题目的解法有些类似,都用到了后缀数组这个数据结构.求一个字符串中连续出现的次数最多的子串,首先生成后缀数组例如上面的字符串为: abababc bababc ababc babc abc bc c 可以看出第一个后缀数组和第三个后缀数组的起始都为ab,第5个后缀数组也为ab.可以看出规律来,一个字符串s,如果第一次出现

将字符串中连续出现的重复字母进行压缩

原文地址:http://leihuang.net/2014/05/19/List-Interviews/ 单链表的一些常见面试题汇总 单链表反转/逆序 求单链表倒数第N个数 找到单链表的中间结点 如何判断链表是否有环的存在 单链表建环,无环链表变有环 如何知道环的长度? 如何找出环的连接点在哪里? 删除单链表中的重复元素 下面我先简单叙述一下每道题的思路,然后把实现的程序一起贴出来,不会讲得太细,我觉得只要有了思路之后,接下来的难点就是语言上的一些细节问题了,这个不自己去实现,听别人讲是体会不到

[2013百度软件研发笔试题] 求字符串中连续出现同样字符的最大值

题目完整描写叙述为:用递归的方式实现一个求字符串中连续出现同样字符的最大值.如aaabbcc,连续出现a的最大值为3,abbc,连续出现字符最大的值为2. 下面是我想出来的方法: #include <iostream> using namespace std; #define MAX(a, b) (a) > (b) ? (a) : (b) int Get(char *s, int n, int m)  //字符指针, 当前最长串, max最长串 {     if(*(s+1) == '\

[2013百度软件研发笔试题] 求字符串中连续出现相同字符的最大值

题目完整描述为:用递归的方式实现一个求字符串中连续出现相同字符的最大值,如aaabbcc,连续出现a的最大值为3,abbc,连续出现字符最大的值为2. 以下是我想出来的方法: #include <iostream> using namespace std; #define MAX(a, b) (a) > (b) ? (a) : (b) int Get(char *s, int n, int m)  //字符指针, 当前最长串, max最长串 {     if(*(s+1) == '\0'

去除字符串中连续重复的字符

目的:把字符串中连续重复的字符赐除掉. 输入:序列:kkkhan888shioobo66 正确的返回结果应该是:hanshibo 思路解析 1 使用JAVA正则表达式,匹配出连续相同的字符或数字. 2 查找出匹配出来的序列,并取出来放到list里面 3 对list进行排序.把重复的序列排在前面.(该步可省略) 4找出连续重复的子序列,并把这些连续重复的子序列用空(字字符串)替换. 5 返回输出. code public class Test { public static void main(S