论坛首页 招聘求职论坛

讨论曾经被考过的一个面试题:将一个英文句子单词倒置的实现...

浏览 39185 次
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2004-09-04  
String translate(String input);
比如input为"I am a student",方法应返回"student a am I"
   发表时间:2004-09-04  
String[] words = input.split(" ");;
String result = new String();;
for(int i = words.length - 1; i >=0; i--); {
  result += words[i];
}
return result;
0 请登录后投票
   发表时间:2004-09-05  
呵呵, 偶想到的第一个答案是:

google
java reverse string
0 请登录后投票
   发表时间:2004-09-05  
gigix 写道
String[] words = input.split(" ");;
String result = new String();;
for(int i = words.length - 1; i >=0; i--); {
  result += words[i];
}
return result;


如果出现逗号怎么办?

Yes,I am a student应该是student a am I,Yes吧。
0 请登录后投票
   发表时间:2004-09-05  
哈哈,庄兄可真厉害,我有一次笔试的时候,也是这个题目,结果我写的和gigix兄几乎一样,结果一下子那个面试官就问了我:“如果有逗号怎么办”?结果我说,这个程序暂时不考虑逗号,那个面试官一滴汗!
0 请登录后投票
   发表时间:2004-09-06  
String的split是可以支持正则表达式的。  那问题就容易解决了。

注意:可能有更好的。
0 请登录后投票
   发表时间:2004-09-06  
public class Test{


    public static String reverse(String input);{
        
        String SEPARATORS = " ,\t:'';?";
        StringBuffer buffer = new StringBuffer("");;
        StringBuffer tempBuffer = new StringBuffer("");;

        for (int i = 0; i < input.length();; i++);{

            char c = input.charAt(i);;

            if ( SEPARATORS.indexOf(c); != -1 );{
                if (tempBuffer.length(); != 0);{
                    buffer.insert(0, tempBuffer);;
                    tempBuffer.delete(0, tempBuffer.length(););;
                }
                buffer.insert(0, c);;
            }
            else{
                tempBuffer.append(c);;
            }
        }
        
        return buffer.insert(0, tempBuffer);.toString();;
    }

    
    public static void main(String[] args);{
        
        String s1 = "I am a student";
        String s2 = "I am a student , yes? no";
        String s3 = " she said:'It's OK!'";
        String s4 = "I am a code? yes   ";
        
        System.out.println("s1=["+s1+"], reversed s1=["+Test.reverse(s1);+"]");;
        System.out.println("s2=["+s2+"], reversed s2=["+Test.reverse(s2);+"]");;
        System.out.println("s3=["+s3+"], reversed s3=["+Test.reverse(s3);+"]");;
        System.out.println("s4=["+s4+"], reversed s4=["+Test.reverse(s4);+"]");;
    }
}
0 请登录后投票
   发表时间:2004-09-06  
	static int current  = 0 ;
	static String input;
	
	public static void main( String[] args ); {
		input = "Yes,I am a student";
		System.out.println(input);;
		System.out.println(translate(););;
	}
	
	static String translate(); {
		java.util.ArrayList al = new java.util.ArrayList();;		
		String token;
		while ( (token=token();); != null ); {
			al.add(token);;
		}
		String result = new String();;
		String[] words = (String[]); al.toArray(new String[0]);;
		for(int i = words.length - 1; i >=0; i--); {
			result += words[i];
		}
		return result; 
	}
	
	static String token(); {
		boolean state = true;
		StringBuffer buf = new StringBuffer();;		
		char c = '\0';
		
		while ( state ); {
			if ( current + 1 >= input.length(); ); {
				break;
			}
			c = input.charAt(current);;
			switch ( c ); {
		    	case 'A':
		    	case 'B':
		    	case 'C':
		    	case 'D':
		    	case 'E':
		    	case 'F':
		    	case 'G':
		    	case 'H':
		    	case 'I':
		    	case 'J':
		    	case 'K':
		    	case 'L':
		    	case 'M':
		    	case 'N':
		    	case 'O':
		    	case 'P':
		    	case 'Q':
		    	case 'R':
		    	case 'S':
		    	case 'T':
		    	case 'U':
		    	case 'V':
		    	case 'W':
		    	case 'X':
		    	case 'Y':
		    	case 'Z':
		    	case 'a':
		    	case 'b':
		    	case 'c':
		    	case 'd':
		    	case 'e':
		    	case 'f':
		    	case 'g':
		    	case 'h':
		    	case 'i':
		    	case 'j':
		    	case 'k':
		    	case 'l':
		    	case 'm':
		    	case 'n':
		    	case 'o':
		    	case 'p':
		    	case 'q':
		    	case 'r':
		    	case 's':
		    	case 't':
		    	case 'u':
		    	case 'v':
		    	case 'w':
		    	case 'x':
		    	case 'y':
		    	case 'z':		    
		    	    buf.append(c);;
		    	    current++;
		    	    break;
		    	default:
		    		state = false;
		    }
		}
		if ( buf.length(); > 0 ); {
			return buf.toString();;
		} else {
			if ( c != '\0' ); {
				buf.append( c );;
				current++;
				return buf.toString();;
			} else {
				return null;
			}
		}
	}
0 请登录后投票
   发表时间:2004-09-06  
这么长的switch和case,我的第一感觉:Bad Smell
0 请登录后投票
   发表时间:2004-09-06  
呵呵, lithium 的这段switch代码改成如下可能会简洁一些:

if ( !Character.toUpperCase(c);.isUpperCase(); );
    state = false;
else {
    buffer.append(c);;
    current++;
}
0 请登录后投票
论坛首页 招聘求职版

跳转论坛:
Global site tag (gtag.js) - Google Analytics