字符串比较问题

jp0077777 2009-08-01 06:13:43
字符串 "9 1 10 6 13"



字符串1 "1 2 3 4 5"
字符串2 "2 3 4 5 6"
字符串3 "3 4 5 6 7"
字符串4 "4 5 6 7 8"
字符串5 "5 6 7 8 9"
字符串6 "6 7 8 9 10"
字符串7 "7 8 9 10 11"
字符串8 "8 9 10 11 12"
字符串9 "9 10 11 12 13"
字符串10 "10 11 12 13 14"


字符串 "9 1 10 6 13"
要在字符串1-字符串10中 查找是否有 任意3个数相同 如果有则显示出“有3个数相同”
并且显示出 字符串1-字符串10中另外2个数字

如"9 1 10 6 13"
跟字符串9 "9 10 11 12 13" 有 9 10 13相同 则显示出有“3个数相同” 并且显示出字符串9中另外2个数为 11 12

有好一点的方法吗? 要查10个字符串 如果满足条件的都要显示出来

谢了

...全文
134 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jp0077777 2009-08-02
  • 打赏
  • 举报
回复
谢了
wuwenchun168 2009-08-01
  • 打赏
  • 举报
回复
菜鸟路过学习中~
wuwenchun168 2009-08-01
  • 打赏
  • 举报
回复
菜鸟路过学习中~
SYSSZ 2009-08-01
  • 打赏
  • 举报
回复
Private Sub Form_Load()
s = "9 1 10 6 13"
s1 = "1 2 3 4 5"
s2 = "2 3 4 5 6"
S3 = "3 4 5 6 7"
S4 = "4 5 6 7 8"
S5 = "5 6 7 8 9"
S6 = "6 7 8 9 10"
S7 = "7 8 9 10 11"
S8 = "8 9 10 11 12"
S9 = "9 10 11 12 13"
S10 = "10 11 12 13 14"
arr = Array(s1, s2, S3, S4, S5, S6, S7, S8, S9, S10)
For i = 0 To 9
j = getnum(s, arr(i))

k = k + j
Next
MsgBox k
End Sub
Private Function getnum(ByVal s1 As String, ByVal s2 As String)
Dim a, b
Dim arr() As String
Dim i As Integer, j As Integer, k As Integer, l As Integer
a = Split(s1, " ")
b = Split(s2, " ")
For i = 0 To UBound(a)
For j = 0 To UBound(a)
If a(i) = b(j) Then
ReDim Preserve arr(k)
arr(k) = a(i)
k = k + 1
Exit For
End If
Next
Next
If k >= 3 Then

getnum = 1
For i = 0 To UBound(a)
l = 0
For j = 0 To UBound(arr)
If a(i) <> arr(j) Then
l = l + 1
End If
Next
'Debug.Print l
If l = UBound(arr) + 1 Then
s = s & a(i) & ","
End If
Next
Debug.Print s
Else
getnum = 0
End If
End Function
贝隆 2009-08-01
  • 打赏
  • 举报
回复
飘过
djkhym 2009-08-01
  • 打赏
  • 举报
回复
1.首先是要借助split函数分别转换成数组,上面的已经做了;
2.然后进行元素匹配,并对匹配数存储和计数,当记数到3个时止;
3.若有三个数被匹配,输出存储的匹配数,并从另一个数组中漏去已经存储的匹配数;
4.扫描数组,打印未被漏去的数
东方之珠 2009-08-01
  • 打赏
  • 举报
回复
Option Explicit

Private Function FindCharacter(ByVal Str As String) As Boolean

Dim Str1 As String, Str2 As String
Dim S1() As String, S2() As String, S3() As String
Dim S As String
Dim i As Integer, j As Integer, m As Integer, n As Integer

Str1 = "9 1 10 6 13"
Str2 = Str

S1 = Split(Str1, " "): S2 = Split(Str2, " ")

m = 0: n = 0

For i = 0 To UBound(S1)
For j = 0 To UBound(S2)
If Val(S1(i)) = Val(S2(j)) Then
m = m + 1: S = S & (S1(i) & " ")
Debug.Print "相同的数是:" & S1(i)
End If
Next
Next

n = UBound(S2) + 1 - m

S3 = Split(S, " ")

For i = 0 To UBound(S2)
For j = 0 To UBound(S3)
If Val(S2(i)) = Val(S3(j)) Then
S2(i) = ""
End If
Next
If Len(S2(i)) <> 0 Then Debug.Print "不相同的数是:" & S2(i)
Next

Debug.Print "共有" & m & "个相同的数!", "共有" & n & "个不相同的数!"

FindCharacter = True

End Function

Private Sub Command1_Click()
Dim S9 As String
S9 = "9 10 11 12 13"
FindCharacter (S9)
End Sub
tzwsoho 2009-08-01
  • 打赏
  • 举报
回复
10个字符串里面的数都是有大小顺序的?如果是这样的话建议比较的时候从字符串后面开始比较,比如字符串中"6"与字符串1比较时,因为6>5,所以可以马上确定字符串1里面没有与6相同的数了
vbman2003 2009-08-01
  • 打赏
  • 举报
回复
数字有没有一定的范围?比如最大值最小值各是多少?

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧