求字符串中出现最多的字符和出现的次数

原帖在:  http://topic.csdn.net/u/20100426/02/7c903e18-5dd1-4f2c-8918-add42fbe7152.html

 

里面的实现是C#版的 ,下面贴一个 VB版的

 

Imports System Imports System.Collections.Generic Module Module1 Const PromptString As String = "Please enter a string :" Const ConfirmPromptString As String = "Your enter the string is : ""{0}""" Const FrequencyString As String = "The highest frequency in enter string is character '{0}',count is {1}" Sub Main() While (True) Console.WriteLine(PromptString) Console.WriteLine() Console.Write("{0}{0}{0}", vbTab) Dim enterString As String = Console.ReadLine() Console.WriteLine() Console.WriteLine(ConfirmPromptString, enterString) Console.WriteLine() Dim highestFrequencyChar As Char Dim count As Integer MethodOne(enterString, highestFrequencyChar, count) Console.WriteLine("MethodOne :") Console.WriteLine() Console.WriteLine(FrequencyString, highestFrequencyChar, count) Console.WriteLine() highestFrequencyChar = "" count = 0 MethodTwo(enterString, highestFrequencyChar, count) Console.WriteLine("MethodTwo :") Console.WriteLine() Console.WriteLine(FrequencyString, highestFrequencyChar, count) Console.WriteLine() End While End Sub Private Function MethodOne(ByVal enterString As String, ByRef highestFrequencyChar As Char, ByRef count As Integer) As Integer Dim dic As IDictionary(Of Char, Integer) = New Dictionary(Of Char, Integer)() highestFrequencyChar = "" Dim max As Integer = 0 Dim i As Integer For i = 0 To enterString.Length - 1 If dic.TryGetValue(enterString(i), count) Then dic(enterString(i)) += 1 If dic(enterString(i)) > max Then max = dic(enterString(i)) highestFrequencyChar = enterString(i) End If Else dic(enterString(i)) = 1 End If Next count = max Return 1 End Function Private Function MethodTwo(ByVal enterString As String, ByRef highestFrequencyChar As Char, ByRef count As Integer) As Integer Dim max As Integer = 0, tempCount As Integer Dim i As Integer, len As Integer = enterString.Length For i = 0 To len - 1 tempCount = len - enterString.Replace(enterString(i), "").Length If tempCount > count Then count = tempCount highestFrequencyChar = enterString(i) End If Next Return 1 End Function End Module

 

 

方法一和方法二 在有多个字符出现次数相同时,返回结果是不同的

 

eg:  "abbcccaba"

 

方法一 返回的是  c , 3

 

方法二 返回的是  a , 3

 

也就是 方法一 返回的是第一个 "在顺序上第一个出现次数最多"  的数

 

而方法二 返回的是 第一个 "出现次数最多" 的数

你可能感兴趣的:(function,String,Module,Integer,character,Dictionary)