| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1093 人关注过本帖
标题:字符串如何去重复?
只看楼主 加入收藏
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1925
专家分:2992
注 册:2009-12-22
结帖率:89.13%
收藏
 问题点数:0 回复次数:8 
字符串如何去重复?
字符串示例:ace2iit、ace2iit、、ace2iit、
去重复后为:ace2iit、

[此贴子已经被作者于2023-2-19 18:28编辑过]

搜索更多相关主题的帖子: 示例 字符串 重复 
2023-02-19 11:27
冬瓜汤
Rank: 2
等 级:论坛游民
威 望:1
帖 子:18
专家分:75
注 册:2023-1-30
收藏
得分:0 
把字符串作为dictionary的key名,然后去重。这个百度一下,代码一大堆。
收到的鲜花
  • yuma2023-02-20 18:47 送鲜花  1朵  
2023-02-19 13:11
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1925
专家分:2992
注 册:2009-12-22
收藏
得分:0 
回复 2楼 冬瓜汤
感谢,已解决。

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2023-02-20 18:47
kings12333
Rank: 2
等 级:论坛游民
帖 子:114
专家分:66
注 册:2012-11-29
收藏
得分:0 
回复 3楼 yuma
咋解决的大佬,给个事例看看
2023-02-22 22:28
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1925
专家分:2992
注 册:2009-12-22
收藏
得分:0 
VBS版的,稍调试就是VB6版的。

TestStr = "abcd、3、、abcd、"
Result = ""
For i = 1 To Len(TestStr)
  If InStr(1, Result, Mid(TestStr, i, 1), 1) > 0 Then
  TestStr = Replace(TestStr, Mid(TestStr, i, 1), "")
  'MsgBox TestStr
  Else
   Result = Result + Mid(TestStr, i, 1)
  End If
Next
MsgBox Result

MyTest = ""
For k = 1 To Len(Result)
  resk = Mid(Result, k, 1)
  Value = 0
  For t = 1 To Len(TestStr)
     Rest = Mid(TestStr, t, 1)
     If resk = Rest Then
       Value = Value + 1
     End If
  Next
  MyTest = MyTest & "字符串为" & resk & " 次数为:" & Value & vbCrLf
Next
MsgBox MyTest

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2023-02-23 05:19
kings12333
Rank: 2
等 级:论坛游民
帖 子:114
专家分:66
注 册:2012-11-29
收藏
得分:0 
回复 5楼 yuma
数组+字典 如何实现?
2023-02-23 21:38
wds1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:49
帖 子:393
专家分:2025
注 册:2016-3-10
收藏
得分:0 
如果使用字典去重,需要引用《Microsoft scripting runtime》
具体事例如下:
Private Sub Command1_Click()
  Dim arr(5)
  arr(0) = "att"
  arr(1) = "att1"
  arr(2) = "att"
  arr(3) = "att2"
  arr(4) = "att5"
  arr(5) = "att2"
  ’数组+字典剃重
  Dim dict As New Dictionary
  For i = 0 To UBound(arr)
    If Not dict.Exists(arr(i)) Then dict.Add arr(i), ""
  Next i
  '输出
  For Each Key In dict.Keys
    Debug.Print Key
  Next Key
End Sub
输出结果:
att
att1
att2
att5   
2023-03-25 11:31
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1925
专家分:2992
注 册:2009-12-22
收藏
得分:0 
以下是引用kings12333在2023-2-23 21:38:39的发言:

数组+字典 如何实现?

   
   
这个算法使用了一个字典对象来存储数组中的元素。首先创建一个空的字典对象,然后遍历数组中的每个元素。如果字典中不存在该元素,则将该元素添加到字典中,并将其值设为 1。最后,将字典中的键(即不重复的元素)赋值给原数组。
这个算法的时间复杂度为 O(n),因为只需要遍历一次数组,并且字典的添加和查找操作的时间复杂度为 O(1)。同时,这个算法也不需要使用额外的空间来存储删除后的数组,因为直接将字典中的键赋值给原数组即可。

Private Sub RemoveDuplicates(ByRef arr() As Variant)
    Dim dict As Object
    Set dict = CreateObject("Scripting.Dictionary")
   
    Dim i As Long
    For i = LBound(arr) To UBound(arr)
        If Not dict.Exists(arr(i)) Then
            dict.Add arr(i), 1
        End If
    Next i
   
    arr = dict.Keys
End Sub

Private Sub Form_Load()
Dim arr() As Variant
arr = Array(1, 2, 3, 2, 4, 5, 3)
RemoveDuplicates arr
For Each i In arr
MsgBox i
Next
End Sub

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2023-03-28 21:01
kings12333
Rank: 2
等 级:论坛游民
帖 子:114
专家分:66
注 册:2012-11-29
收藏
得分:0 
回复 7楼 wds1 回复 8楼 yuma
感谢两位大师...
2023-03-30 18:07
快速回复:字符串如何去重复?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016343 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved