Tag: 算法

单独的数字范围,如果按顺序,然后是连字符,如果顺序中断则发生逗号字符

我有一个字符串表示页面nos,如1,2,3,4,8,9,10,15 。 我想将它显示为1-4,8-10,15即序列中的数字由连字符分隔,连字符由最小和最大数字依次包围。 如果按顺序中断,则范围用逗号分隔。 string pageNos = “5,6,7,9,10,11,12,15,16”; string result=string.Empty; string[] arr1 = pageNos.Split(‘,’); int[] arr = new int[arr1.Length]; for (int x = 0; x < arr1.Length; x++) // Convert string array to integer array { arr[x] = Convert.ToInt32(arr1[x].ToString()); } for (int i = 0; i < arr.Length;i++) { for (int j = i + […]

c#使用按位XOR进行交换

void swap(ref int x, ref int y) { x = x ^ y; y = y ^ x; x = x ^ y; } 我正在学习按位异或。 这种交换是如何发生的? 它让我大吃一惊。 这个方法应该交换X和Y的内容,但我不明白AT ALL会发生什么?

如何在C#中评估自定义括号表达式?

我正在开发一个高级搜索function,其中我需要评估的表达式看起来像是这样的括号: ((Loan number is 1000 And Lock Date is less than 12/03/2015) Or Borrower SSN contains 12345) And ((Buy date is between 12/01/2015 and 23/02/2016 And APR is less than 20000) Or Loan amount is greater than 60000) 或者用简单的话说 ((condition1 And condition2) Or condition 3) And ((condition4 And condition5) Or condition6). 如果我们看一下括号,必须首先评估condition1和condition2,然后用条件3执行它的输出,依此类推…… 我们有API来一次评估两个条件。 然而,在这方面的挑战是 1)如何识别相应的括号并首先对其进行评估。 […]

在高斯范围内生成随机数?

我想使用随机数生成器,在高斯范围内创建随机数,我可以自己定义中位数。 我已经在这里问了一个类似的问题,现在我正在使用这段代码: class RandomGaussian { private static Random random = new Random(); private static bool haveNextNextGaussian; private static double nextNextGaussian; public static double gaussianInRange(double from, double mean, double to) { if (!(from < mean && mean < to)) throw new ArgumentOutOfRangeException(); int p = Convert.ToInt32(random.NextDouble() * 100); double retval; if (p < (mean * Math.Abs(from […]

搜索范围列表中数字的最快方法

我有以下代码来查找范围列表中的数字匹配。 public class RangeGroup { public uint RangeGroupId { get; set; } public uint Low { get; set; } public uint High { get; set; } // More properties related with the range here } public class RangeGroupFinder { private static readonly List RangeGroups=new List(); static RangeGroupFinder() { // Populating the list items here RangeGroups.Add(new […]

实现一个高效的算法来找到两个字符串的交集

实现一个算法,该算法将两个字符串作为输入,并返回两者的交集,每个字母最多表示一次。 Algo :(考虑使用的语言将是c#) 将两个字符串转换为char数组 获取较小的数组并为其生成哈希表,其中键为字符,值为0 现在循环遍历另一个数组,并在散列表中增加计数(如果该字符存在于其中)。 现在取出值为> 0的哈希表的所有char。 这些是交叉值。 这是一个O(n)解决方案,但使用额外的空间,2个char数组和一个哈希表 你能想到比这更好的解决方案吗?

比较两个数组是否相同的最快方法是什么?

我有两个对象数组,它们可能具有相同的值,但顺序不同,例如 { “cat”, “dog”, “mouse”, “pangolin” } { “dog”, “pangolin”, “cat”, “mouse” } 我希望将这两个数组视为相等。 测试这个的最快方法是什么?

查找字符串数组中最长的子字符串,并将其从数组中的所有元素中删除

我有这个数组,例如(大小是可变的): x = [“10111”, “10122”, “10250”, “10113”] 我需要找到最长的字符串,它是每个数组元素的子字符串(在本例中为“10”)(它不必是字符串的前缀)。 我必须从所有字符串中删除它。 此示例的输出将是: x=[“111″,”222″,”250″,”113”] //common value = “10”

C#中的通用二进制搜索

下面是我的通用二进制搜索。 它适用于整数类型数组(它找到其中的所有元素)。 但是当我使用字符串数组来查找任何字符串数据时会出现问题。 它对第一个索引和最后一个索引元素运行正常但我找不到中间元素。 Stringarray = new string[] { “b”, “a”, “ab”, “abc”, “c” }; public static void BinarySearch(T[] array, T searchFor, Comparer comparer) { int high, low, mid; high = array.Length – 1; low = 0; if (array[0].Equals(searchFor)) Console.WriteLine(“Value {0} Found At Index {1}”,array[0],0); else if (array[high].Equals(searchFor)) Console.WriteLine(“Value {0} Found At Index {1}”, array[high], […]

测试字符串中重复的字符

我正在用字符串做一些工作,我有一个场景,我需要确定一个字符串(通常是一个小的<10个字符)是否包含重复的字符。 `ABCDE` // does not contain repeats `AABCD` // does contain repeats, ie A is repeated 我可以循环遍历string.ToCharArray()并测试char []中每个其他角色的每个角色,但我觉得我错过了一些明显的东西….也许我只需要咖啡。 有人可以帮忙吗? 编辑: 字符串将被排序,因此顺序并不重要,因此ABCDA => AABCD 重复的频率也很重要,所以我需要知道重复是双重还是三重等。