日期:2014-05-20  浏览次数:20912 次

赛门铁克的面试题
1.写一个方法method1(String   s),返回字符串参数中最后一个数字。
例:“His   telephone   number   is   123456789”     return   123456789;
          "There   are   1   bees,2   butterflies,3   dragonflies "   return   3;

2.用2分法查询并返回数组中元素的索引   method2(int   n)。
{-10,0,10,17,17,23,65,123}   当n   =   17   return   4;当n=24   return   5;

前段时间去面试时候做的,1个小时,一共3道。还有一道2进制的题数字太长没记下来。当时俺没做完,特来此寻觅高人。

看看你有没有进著名外企的实力!^_^


------解决方案--------------------
第一道题目用正则式应该是比较好的选择,第二道题目要做出来应该也只是时间问题。是笔试还是上机,笔试的话那1个小时要做3道这种题还真得看状态了
------解决方案--------------------
先把字符串反转.然后找出第一串数字.再把数字反转成原来的数字.
这个方法虽然笨,但可以避免数字前是非空格的情况.
------解决方案--------------------
中午帮你写,吃饭去了
------解决方案--------------------
看到了差距了。
------解决方案--------------------
第一题先获取字符串长度在 提取最后一个字符 不可以吗??非要用正则?
------解决方案--------------------
先把字符串反转.然后找出第一串数字.再把数字反转成原来的数字.
这个方法虽然笨,但可以避免数字前是非空格的情况.
/////////////////////////////////////////////////////
这个方法不错,将string用split分割成字符数组,然后找到第一个全为数字的元素就行了
,不知道“hello my3”要不要提取3???题的意义还不太明确

------解决方案--------------------
第一个程序:
import java.util.regex.*;
import java.io.*;
class A
{
public static void main(String[] args) throws IOException
{
System.out.println( "输入一行字符串,返回最后一个数字! ");
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String s=br.readLine();
method1(s);
}

static void method1(String s)
{
Pattern p=Pattern.compile( "\\d+ ");
StringBuffer sb=new StringBuffer(s);
String s1=sb.reverse().toString();
Matcher m=p.matcher(s1);
m.find();
String s2=m.group();
StringBuffer sb1=new StringBuffer(s2);
System.out.println(sb1.reverse());
}

}
小弟技术差,查了半天API才写出来...
------解决方案--------------------
有空研究下
------解决方案--------------------
String[] str = "11abc222 ".split( "[\\D]+ ");
System.out.println(str[str.length-1]);
------解决方案--------------------
有空研究下

------解决方案--------------------
up
------解决方案--------------------
如果是笔试的话,我肯定来不及啊!
------解决方案--------------------
第一题: 我没用正则表达式,就是从尾到头遍历搜索,先得到最后出现得数字(利用ASIC码)
然后保存这个位置为end,再往前搜索直到不是数字,保存这个位置为begin,最后取出从begin到end子串,程序如下,稍加改动即可判断出小数和负数。
public class TestString
{
public static void main(String[] args)
{
String s1 = new String( "His telephone number is 123456789 ");
String s2 = new String( "There are 1 bees,2 butterflies,3 dragonflies ");
System.out.println(method1(s1));
System.out.println(method1(s2));
}

public static String method1(String s)
{
char end;
for(int i=s.length()-1; i> =0;i--)
{
end = s.charAt(i);
if(end <48||end> 57) continue;