发表时间:2004-09-04
比如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; |
|
发表时间:2004-09-05
呵呵, 偶想到的第一个答案是:
java reverse string |
|
发表时间: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吧。 |
|
发表时间:2004-09-05
哈哈,庄兄可真厉害,我有一次笔试的时候,也是这个题目,结果我写的和gigix兄几乎一样,结果一下子那个面试官就问了我:“如果有逗号怎么办”?结果我说,这个程序暂时不考虑逗号,那个面试官一滴汗!
|
|
发表时间:2004-09-06
String的split是可以支持正则表达式的。 那问题就容易解决了。
注意:可能有更好的。 |
|
发表时间: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);+"]");; } } |
|
发表时间: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; } } } |
|
发表时间:2004-09-06
这么长的switch和case,我的第一感觉:Bad Smell
|
|
发表时间:2004-09-06
呵呵, lithium 的这段switch代码改成如下可能会简洁一些:
if ( !Character.toUpperCase(c);.isUpperCase(); ); state = false; else { buffer.append(c);; current++; } |