主题:字符串问题
紫月蓝风
[专家分:30] 发布于 2007-04-17 20:22:00
输入二个字符串,求出它们的最长公共子串,字符串长度不超255。
如:由键盘依次输入二个字符串为
What is local bus?
Name some local buses.
则最长公共子串为"local bus"
回复列表 (共9个回复)
沙发
&佑慧妹妹& [专家分:660] 发布于 2007-04-17 20:25:00
INPUT a$
INPUT b$
IF a$ < b$ THEN SWAP a$, b$
l = LEN(b$)
FOR q = l TO 1 STEP -1
FOR c = 1 TO l + 1 - q
x$ = MID$(b$, c, q)
IF INSTR(1, a$, x$) <> 0 THEN PRINT x$: END
NEXT
NEXT
END
板凳
mickeyice [专家分:200] 发布于 2007-04-18 15:59:00
正解
3 楼
Matodied [专家分:7560] 发布于 2007-04-20 17:12:00
CLS
INPUT a$,b$
IF LEN(a$)>LEN(b$) THEN SWAP a$,b$\
s$=""
FOR i=1 TO LEN(a$)
FOR j=1 TO LEN(a$)+1-i
t$=MID$(a$,i,j)
IF INSTR(b$,t$)>0 AND LEN(t$)>LEN(s$) THEN s$=t$
NEXT j,i
PRINT s$
END
4 楼
moz [专家分:37620] 发布于 2007-04-23 02:06:00
我只说说我的做法,
至于你们的程序是否凑效,自己上机验证一下.
至于怎样更有效的搜索与加快速度,应该去研究一下,对你们学习有帮助.
input a$
input b$
If Len(b$) < Len(a$) Then swap a$,b$
For i = 1 To Len(a$)
c$ = Mid$(a$, i, 1)
d = 0
Do
d = InStr(d + 1, b$, c$)
If d = 0 Then Exit Do
For j = 1 To Len(a$) - i
If Mid$(a$, i + j, 1) <> Mid$(b$, d + j, 1) Then Exit For
Next
If j > Len(m$) Then m$ = Mid$(a$, i, j)
Loop
Next
Print m$
5 楼
谱灵法师 [专家分:0] 发布于 2010-07-21 17:12:00
INPUT a$
INPUT b$
IF a$ < b$ THEN SWAP a$, b$
l = LEN(b$)
FOR q = l TO 1 STEP -1
FOR c = 1 TO l + 1 - q
x$ = MID$(b$, c, q)
IF INSTR(1, a$, x$) <> 0 THEN PRINT x$: END
NEXT
NEXT
END
6 楼
蓝冰火焰盾 [专家分:0] 发布于 2010-07-24 15:12:00
不要用这种办法直接向IDC_EDITx发送按键消息
7 楼
天上小女人 [专家分:10] 发布于 2010-07-24 15:12:00
不要用这种办法直接向IDC_EDITx发送按键消息
8 楼
神秘-赛尔 [专家分:170] 发布于 2010-08-01 11:11:00
INPUT a$
INPUT b$
IF a$ < b$ THEN SWAP a$, b$
l = LEN(b$)
FOR q = l TO 1 STEP -1
FOR c = 1 TO l + 1 - q
x$ = MID$(b$, c, q)
IF INSTR(1, a$, x$) <> 0 THEN PRINT x$: END
NEXT
NEXT
END
9 楼
神秘-赛尔 [专家分:170] 发布于 2010-08-02 11:53:00
NEXT a$
NEXT b$
我来回复