|
答案确实是AAB, 从12位到16位都是:
WITH t AS (
SELECT STR FROM (
SELECT REPLACE(SYS_CONNECT_BY_PATH(c,','),',') str,LEVEL lvl
FROM (SELECT 'A' c FROM DUAL UNION ALL SELECT 'B' FROM DUAL)
WHERE LEVEL>=10 AND MOD(LEVEL,2)=0
CONNECT BY LEVEL<=16
)
WHERE LENGTH(REPLACE(str,'A'))=lvl/2
AND INSTR(str,'AAA')>0
AND INSTR(str,'AAB')>0
AND INSTR(str,'ABA')>0
AND INSTR(str,'ABB')>0
AND INSTR(str,'BAA')>0
AND INSTR(str,'BAB')>0
AND INSTR(str,'BBA')>0
AND INSTR(str,'BBB')>0
)
SELECT * FROM (
SELECT code,COUNT(DISTINCT str) cnt, RANK() OVER(ORDER BY COUNT(DISTINCT str) DESC) rnk
FROM (
SELECT str,SUBSTR(str,lvl,3) code
FROM t,(SELECT LEVEL lvl FROM DUAL CONNECT BY LEVEL<30)
WHERE lvl<=INSTR(str,'ABA')-1
)
GROUP BY code
)
WHERE rnk=1;
COD CNT RNK
--- ---------- ----------
AAB 4377 1
Elapsed: 00:00:15.86
|
|