该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-11-30
aniu2008 写道 egmacross 写道 2)假如有字符串“6sabcsssfsfs33” ,用最有快速的方法去掉字符“ab3”,不能用java内置字符串方法(indeOf,substring,replaceAll等)?
这个不用内置的能有啥好方法吗? 楼上,这个问题我答得也不是很好,但我知道用正则表达式可以快速匹配,代码不知道怎么正则替换?另就是循环遍历,但效率低,呵呵 给你个正则查询的例子 import java.util.regex.*; class Regex1{ public static void main(String args[]) { String str="6sabcsssfsfs33; String regEx="ab3*"; boolean result=Pattern.compile(regEx).matcher(str).find(); System.out.println(result); } }//ture 使用正则表达式的代码可以这样: public static void main(String[] args) { String str="6sabcsssfsfs33"; Pattern pattern = Pattern.compile("a?b?3?"); Matcher matcher = pattern.matcher(str); System.out.println(matcher.replaceAll("")); } |
|
返回顶楼 | |
发表时间:2009-11-30
一般拒绝笔试的很多都是技术比较牛但理论基础比较差的,很多工作久的人都会有这种感觉。毕竟实际动手能力最重要,虽然理论也是必不可少的。
另外,想想一把年纪还要参加笔试,不能不说是技术人员的悲哀~~~想想都很窝火的,但又很无可奈何。 |
|
返回顶楼 | |
发表时间:2009-11-30
StringBuilder sb = new StringBuilder("6sabcsssfsfs33"); sb.delete(2, 4); sb.delete(sb.length()-2, sb.length()); |
|
返回顶楼 | |
发表时间:2009-11-30
linyvlu 写道 StringBuilder sb = new StringBuilder("6sabcsssfsfs33"); sb.delete(2, 4); sb.delete(sb.length()-2, sb.length()); 绝对的高手,,,,这也太简单了吧 人家的问题你都想太少了 |
|
返回顶楼 | |
发表时间:2009-11-30
不知道循环打印ABCABC那题怎解呀?
请LZ谈谈吧 |
|
返回顶楼 | |
发表时间:2009-11-30
lantb1986 写道 linyvlu 写道 StringBuilder sb = new StringBuilder("6sabcsssfsfs33"); sb.delete(2, 4); sb.delete(sb.length()-2, sb.length()); 绝对的高手,,,,这也太简单了吧 人家的问题你都想太少了 这是个比较拼人品的答案,如果拼对了可能让人对你有深刻的印象,如果拼错了。。。。换一家吧。 这也是个非常直接的答案,如果只限制在这一题内,这个答案肯定没错,而且算是很高效的。很多时候没必要让算法多通用,通用的算法未必都高效。很多时候能让我们快速直接解决实际问题的方法才是最省成本的 |
|
返回顶楼 | |
发表时间:2009-11-30
egmacross 写道 2)假如有字符串“6sabcsssfsfs33” ,用最有快速的方法去掉字符“ab3”,不能用java内置字符串方法(indeOf,substring,replaceAll等)?
这个不用内置的能有啥好方法吗? 转换成byte[]再for咯 |
|
返回顶楼 | |
发表时间:2009-11-30
mooninday 写道 不知道循环打印ABCABC那题怎解呀?
请LZ谈谈吧 class Worker implements Runnable{ static int count = 0; static Object lock = new Object(); int index; int pCount; public Worker(int index){ this.index = index; } public void run() { synchronized (lock) { for (;;) { if(count%3==index){ System.out.println(Thread.currentThread().getName()); count++; pCount++; lock.notifyAll(); if(pCount==10) break; }else{ try { lock.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } } } } new Thread(new Worker(0),"A").start(); new Thread(new Worker(1),"B").start(); new Thread(new Worker(2),"C").start(); 应该有更简单的解法,暂时没想到。 不过我觉得在实际中貌似很难有这种需求。按道理来说,只会让一个工作分成3个部分,让3个线程去做,然后再把结果汇总。这样只需要使用CyclicBarrier(3, Runnable barrierAction),然后在barrierAction中按一定的顺序将所有结果按顺序输出就行了。 |
|
返回顶楼 | |
发表时间:2009-11-30
egmacross 写道 2)假如有字符串“6sabcsssfsfs33” ,用最有快速的方法去掉字符“ab3”,不能用java内置字符串方法(indeOf,substring,replaceAll等)?
这个不用内置的能有啥好方法吗? 同问~~~~ 有人回答一下吗? |
|
返回顶楼 | |
发表时间:2009-11-30
lucky16 写道 egmacross 写道 2)假如有字符串“6sabcsssfsfs33” ,用最有快速的方法去掉字符“ab3”,不能用java内置字符串方法(indeOf,substring,replaceAll等)?
这个不用内置的能有啥好方法吗? 同问~~~~ 有人回答一下吗? 楼上有回答,你自己看啊·· |
|
返回顶楼 | |