c*********p 发帖数: 3217 | 1 举个例子:
1
3
4
60477
6503778
50377
5037789
30353354
5037
503778912
503
如何在上面数字中找到和,503778 匹配的从左到右个数最多的那个数字, 这个例子是,
50377
PERL怎么写?
SQL有可能吗
谢谢. | c*********p 发帖数: 3217 | 2 ding, no one?
我能想到的是, 先把号码去查找,没匹配的,再把,号码/10取整,再找,如此循环,找到为
止.好象很笨的方法,希望能有更科学的.
【在 c*********p 的大作中提到】 : 举个例子: : 1 : 3 : 4 : 60477 : 6503778 : 50377 : 5037789 : 30353354 : 5037
| o*o 发帖数: 404 | 3 egrep '^503778$|^50377$|^5037$|^503$|^50$|^5$'input.dat |sort -r |head -1
【在 c*********p 的大作中提到】 : ding, no one? : 我能想到的是, 先把号码去查找,没匹配的,再把,号码/10取整,再找,如此循环,找到为 : 止.好象很笨的方法,希望能有更科学的.
| w******p 发帖数: 166 | 4 implementing your algorithm:
awk 'function numlen(n){if(n<0)n=-n;if(n==0)return 0;return int(log(n)/log(
10))+1}BEGIN{maxsim=0;maxlen=0;ant=503778;antlen=numlen(ant)}{len=numlen($1)
; adj=ant; inp=$1; if(antlen>len){adj=int(ant/10**(antlen-len));sim=len}else
{inp=int(inp/10**(len-antlen));sim=antlen}; while(inp!=adj){inp=int(inp/10);
adj=int(adj/10);sim--};if(sim>maxlen){maxlen=sim;maxsim=$1}}END{print "
MAXSIM:"maxsim}' | w******p 发帖数: 166 | 5 implementing your algorithm:
awk 'function numlen(n){if(n<0)n=-n;if(n==0)return 0;return int(log(n)/log(
10))+1}BEGIN{maxsim=0;maxlen=0;ant=503778;antlen=numlen(ant)}{len=numlen($1)
; adj=ant; inp=$1; if(antlen>len){adj=int(ant/10**(antlen-len));sim=len}else
{inp=int(inp/10**(len-antlen));sim=antlen}; while(inp!=adj){inp=int(inp/10);
adj=int(adj/10);sim--};if(sim>maxlen){maxlen=sim;maxsim=$1}}END{print "
MAXSIM:"maxsim}' | p***m 发帖数: 387 | 6 why i think the answer should be 503778912??
【在 c*********p 的大作中提到】 : 举个例子: : 1 : 3 : 4 : 60477 : 6503778 : 50377 : 5037789 : 30353354 : 5037
| p***m 发帖数: 387 | |
|