赛门铁克的面试题
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;
else
{
char begin;
int j=i;
do
{
i--;
begin=s.charAt(i);
}while(begin> =48&&begin <=57);
return s.substring(i+1,j+1);
}
}
return null;
}
}
[解决办法]
//从最后一个字符开始搜索,保存符合条件的字符串,然后输出。
public static void method(String str){
String output= " ";
boolean startflag=false;
char c;
for(int i=str.length()-1;i> =0;i--){
c=str.charAt(i);
if(c> '0 '&&c < '9 '){
startflag=true;
output=c+output;
}else{
if(startflag){
System.out.println(output);
return;
}
}
}
if(output.equals( " ")){
System.out.println( "字符串中没有数字 ");
}else{
System.out.println(output);
}
}
[解决办法]
正则表达式记不清楚,还查了一会儿
import java.util.regex.*;
import java.util.*;
public class Cbase {
public static void main(String[] arg){
String s1= "His telephone 3456 number is 123456789 ";
String s2= "There are 1 bees,2 butterflies,3 dragonflies ";
System.out.println(method1(s1));
System.out.println(method1(s2));
int a[]={-10,0,10,17,17,23,65,123};
System.out.println(Arrays.binarySearch(a, 123)+1);//二分,用库
System.out.println(method2(a,-10)+1);//二分,自己构造函数
}
static String method1(String s) {
String ss[]=s.split( "\\D+ ");
return ss[ss.length-1];
}
static int method2(int d[],int k) {
int down=0,up=d.length,index=-100;
boolean find=false;
while(up> =down && !find) {
index=(up-down)/2+down;
if(d[index]> k) up=index-1;
else if(d[index] <k) down=index+1;
else find=true;
}
if(!find) index=-1;
return index;
}
}
[解决办法]
第一题写了一种简单方法
import java.io.*;
public class mainclass {
public mainclass() {
}
public static void main(String[] args) {
String s= "His telephone 3456 number is 123456789 ";
char a;
int isbegin=0;
int numbegin=0;
int numend=0;
for(int i=0;i <s.length();i++){
a=s.charAt(i);
if((a> 47&&a <58)&&isbegin==0){
numbegin = i;
isbegin = 1;
}
if(isbegin==1&&(a <48||a> 57)){
numend=i;
isbegin=0;
}
if(isbegin==1&&(i==(s.length()-1))){
numend=i+1;
isbegin=0;
}
}
System.out.println( " the begin is: "+numbegin);
System.out.println( " the end is: "+numend);
System.out.println( " the answer is: "+s.substring(numbegin,numend));
}
}
[解决办法]
对Java不识很熟 用了10分钟第一题
public class findNum {
/**
* @author Red_angelX
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(method1( "There are 1 bees,2 butterflies,3 dragonflies "));
}
public static String method1(String s)
{
int start = 0;
int end = 0;
int len = s.length();
for(int i=0;i <len;i++)
{
if(s.charAt(len-1-i) > = '0 ' && s.charAt(len-1-i) <= '9 ')
{
end = len - 1 -i;
int t = 0;
while(len-1-i-t> =0 && s.charAt(len-1-i-t)> = '0 ' && s.charAt(len-1-i-t) <= '9 ')
{
start = len -1-i-t;
t++;
}
String temp = s.substring(start,end+1);
System.out.println(temp);
return temp;
}
}
return "No Found! ";
}
}
[解决办法]
学习
[解决办法]
too simple
[解决办法]
for: shan1119(大天使,大菜鸟) ( ) 信誉:101
----------------
如此美妙的代码,居然没人顶~~
--------
曾经看贴不回贴,如今回帖不看贴!