·写一个函数去掉一个字符串中单词间多余的空格,使得相邻两个单词间有且只有一个空格。例如当输入字符串是“Hello!_ _Game_programming_ _world!”时,调用该函数后字符串变为“Hello_Game_programming_world!”。·注 不准用系统函数

解决方案 »

  1.   

    /**
     * @param args
     */
    public static void main(String[] args) {
    String value = "    Hello!  Game               programming    world! ";
    try {
    String v = clibString(value);
    System.out.println("result:" + v);
    } catch (Exception e) {
    // TODO: handle exception
    }
    } private static String clibString(String value) {
    String ch = "";
    ch = value.substring(0, 1);
    // 去头空格;
    if (ch.equals(" ")) {
    value = value.substring(1, value.length());
    System.err.println(value);
    value = clibString(value);
    }
    ch = value.substring(value.length() - 1, value.length());
    // 去尾空格;
    if (ch.equals(" ")) {
    value = value.substring(0, value.length() - 1);
    System.err.println(value);
    value = clibString(value);
    }
    // 去中间多余空格;
    if (value.indexOf("  ") != -1) {
    value = value.substring(0, value.indexOf("  "))
    + value.substring(value.indexOf("  ") + 1, value.length());
    System.err.println(value);
    value = clibString(value);
    }
    return value;
    }
      

  2.   

    function TForm1.clearstring(str: string): string;
    var i:integer;
    begin
       for i:=1 to length(str) do
       begin
           if (str[i]='-') and ((str[i-1]='-') or (str[i-1]='#')) then
           str[i]:='#';
       end;
       while  checkstr(str) do
       for i:=1 to length(str) do
       begin
           if str[i]='#' then
           delete(str,i,1);
       end;
       result:=str;end;
    ------------------------------------------------------
    function TForm1.checkstr(str: string): bool;
    var i:integer;
    begin
      result:=false;
    for  i:=1 to length(str) do
    if str[i]='#' then result:=true;
    end;
      

  3.   

    不准用系统函数 ....
    main不是系统函数吗?
    正则表达式就不用Pattern或者Matcher里面的方法?
      

  4.   

    main又不是函数。是类的主方法,用迭代实现
      

  5.   

    敢问Java中“函数”与“方法”这两个词有什么区别?
      

  6.   

    他的意思应该是不能作为 "函数"(类的成员函数)
    main只是jvm的一个入口而已
      

  7.   

    有道理。是一个意识。没有main你能运行吗?
      

  8.   

    我用main是来测试的。你可调用那方法。你其他也要main
      

  9.   

    感觉除了+ - * / 等等这些,其他的都是系统函数,比如System.out.println(),substring(),length(),delete().....
      

  10.   


    String s = "Hello   Game   programming   world!"
    System.out.print(s.trim().replaceAll("\\s+", " "));PS:什么叫系统函数?
      

  11.   

    不要那么强调是不是能用系统函数了其实出题的意思就是不让你用一些String里的一些方法   split等 没必要为了能不能用而去争论。
    读懂题目,明白题目考的是什么,考你哪方面的知识才是真正的理解题目。
      

  12.   

    其似+ - * / 本质上也是函数C++都可以进行操作符重载。  说不定哪天SUN公司也支持操作符重载了操作符重载是挺有用的
      

  13.   


    可能出题人就是要让用char[] 直接循环加判断做吧  呵呵~  连String都不给用函数? ...恩可能出题的不是搞JAVA的    JAVA不是都叫方法么。
      

  14.   

    String t="Hello     World!  OK!       Yes!";
    Pattern pattern=Pattern.compile("\\s{2,}");
    Matcher matcher=pattern.matcher(t);
    String y=null;
    while(matcher.find()){
    y=t.replaceAll("\\s{2,}"," ");
    }
    System.out.println(y);
      

  15.   


    其实是说不准用系统里的 trime() 方法吧
      

  16.   


    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    public class Test2 { /**
     * @param args
     */
    public static void main(String[] args) {
    String s = "Hello!  Game program   ming  orld!";
    Pattern p = Pattern.compile("\\s{2,}");
    Matcher m = p.matcher(s);
    StringBuffer sb = new StringBuffer();

    while(m.find()) {
    m.appendReplacement(sb, " ");
    }
    m.appendTail(sb);
    System.out.println(sb);
    }}
      

  17.   


    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class ToOne { /**
     * @param args
     */
    public static void main(String[] args) {
    Pattern p = Pattern.compile("_+"); 
            String s = "Hello__world____i_love__you__";
            Matcher m = p.matcher(s);
            while (m.find()) {       
                s = m.replaceAll("_");
            }
            System.out.println(s);
    }

    public static void p(Object o){
    System.out.println(o+" ");
    }}
      

  18.   

    写一个方法: 
    public String delString(String A,String B){ 
                  .....方法体...... 

    用高效的方式从A中剔除包含B的字符,例如String A="hi are you ok"; 
    String B="io";delString方法返回"h are yu k" 
    注意:不能使用String的instand of ,splid,char at等等库函数 
    请问怎么做?
    比如这个吧!!
      

  19.   

    不准用系统方法!!!又是!!!
    难道连main()也不让吗?不明白你面试的公司是要招什么样的人?是算法高手or程序高手?
    sun公司开发的JDK,里面的方法就是让我们用的,里面的算法都是写好的,如果你公司是要
    代码高手,就告诉他们:现在80%的事情已经被人做了,代码高手就是把JDK上的方法用的滚瓜烂熟。
      

  20.   

    不知道这样合不合题意。
    class TestAA{
    public static void main(String args[]){
    String str = "Hello!_ _Game_programming_ _world!";
    StringBuffer sb = new StringBuffer();
    for(int i=0;i<str.length();i++){
    char c = str.charAt(i);
    if(c == ' '){
    continue;
    }
    sb.append(c);
    }
    System.out.println(sb.toString());
    }
    }
      

  21.   

    题目意思是达到了,不过如果这个字符串是Hello! Game programming world!"就惨了,无法阅读了,呵呵。
      

  22.   

    答:34楼的不合题意。人家都说了,不能使用charAt等之类的函数。我看神仙也难下手。不能用String中方法,看你还有什么招来使用String。都是些什么变态要求啊。不要费脑细胞了。
      

  23.   

    我的理解是这个题目不能用系统提供的split函数。你觉得呢?