首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

气泡滚大——删除线性数据中的杂质

2012-09-05 
气泡滚大——剔除线性数据中的杂质??? 这是一道Java的面试题,但是我总结了除了一种自称为“气泡滚大”的方法。

气泡滚大——剔除线性数据中的杂质

??? 这是一道Java的面试题,但是我总结了除了一种自称为“气泡滚大”的方法。适用场景——

??? 剔除线性数据中的杂质:O(n)时间从前到后扫描数据,杂质如同上升的气泡越滚越大,最终都浮出水面(被清理掉)。

/** * Java面试题:一个很大的字符串如下a,空格,b,空格,c,空格,d.....如何去掉空格  不能用复制的方式,机子的内存已基本被字符串所占<br/> * @author Sam */public class Test1 {/** * 打印str[l~r] */static void print(char[] str, int l, int r) {for (int i = l; i <= r; i++) {System.out.print(str[i]);}System.out.println();}/** * @return去掉空格后最后字符的位置strR(new) */private static int fun(char[] str, int strL, int strR) {//找到第一个空格int l=strL;while(str[l]!=' ')l++;int r=l;//[l,r]是已经搜集到的空格,就像水中的气泡,气泡不断变大while(r<=strR-1){if(str[r+1]!=' '){//下一个是字符str[l]=str[r+1];l++;r++;}else{//下一个是空格r++;}}//[strL,l-1]是去掉空格后的字符串,[l,r]是空格return l-1;}public static void main(String[] args) {char[] str = "a b c b d c c c a b ".toCharArray();print(str,0,str.length-1);int newStrR=fun(str,0,str.length-1);print(str,0,newStrR);}}
?

?

热点排行