问题标签 [lexicographic-ordering]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
redis - REDIS:如何使用词典索引来保存数据范围
背景资料
我需要使用键查询值,但需要以特定的优先顺序对键进行评估,其中顺序为:
- 如果存在完全匹配,则使用与匹配键关联的值
- 如果键属于 db 中定义的键范围,则使用与该范围关联的值。
- 如果没有匹配的键,使用默认值
为了更好地解释这个问题,我将画一个这样的哈希:
使用上述存储结构,我需要能够:
- 使用键 12345 进行查询并让数据库返回 abc,因为它找到了完全匹配。
- 如果我使用键“33333”进行查询,那么我只想返回与“默认”键关联的值 ddd,因为我没有 33333 的键/值。
- 如果我使用键“2000”或“2004”查询,我希望它找到值 bbb。
问题
在 REDIS 中,我可以以某种方式创建像“2000 [0-10]”这样的密钥吗?
有一个更好的方法吗?我知道我可以以编程方式扩展 2000[0-10] 并将每个值作为单独的条目存储在表中。但是如果用户更新这个范围并将其更改为 2000[15-21],那么清理就会有点混乱。
到目前为止我尝试过的
我一直在玩排序集?我不完全理解它们是如何工作的。但到目前为止,我已经尝试过这样的事情:
现在我正在尝试查看是否可以查询 2000(或 2000-2010 范围内的任何其他值)并返回“ddd”。但它不起作用。
编辑 1
因此,在阅读了一些关于索引/二级索引的信息后,这是我一直在使用的原型数据结构:
第一条记录,我想说我的范围内的起始数字是 2000,结束数字是 2010。对于该范围内的任何数字,使用值 1234512345 但现在我需要知道如何执行查询。因此,例如,如果用户请求知道要为键“2009”使用什么值,我不知道如何对该结构运行查询以发现它应该使用 1234512345
编辑 2
所以最后,我想我决定使用字典索引,如上所示,然后将逻辑烘焙到应用程序本身中进行解释。例如,
该应用程序可以查询北美的所有记录,然后当它返回上述列表时,它可以通过“:”将每个记录拆分(成数组)以确定存在哪些范围。
vb.net - How to order array in lexicographical order vb.net
This is kinda complicated for me to understand
The answer is the each Rotation sorted from lowest array value to highest array value.
When I sort this array above by hand I should get
So the answer should be 2, 1, 3, 4, 0
I get stuck in a infinite loop and I can't put my finger on it
Here is my Code
Here is a new attempt I tried I still can't make it work
Something to do with multi-layer comparisons which I can't grasp.
python - Python从字符串数组生成字典顺序输出
我正在开发一个 Python(3) 程序,在该程序中我必须编写一个函数来生成一个输出,该输出将是按字典顺序排列的字符串列表。
这是一个例子:如果我们传递一个字符串,例如:??2??00
我称之为 apattern
那么它必须用一个整数替换问号,例如1
一个名为的关键字scheule
表示数量?
并生成如下所示的输出:
而且,这就是我尝试过的:所以,如果pattern= '??2??00'
然后scheule=4
:
它不会生成所需的输出,但它会生成以下内容:
theory - 图灵机按字典顺序计算下一个字符串的状态图
图灵机在字母 Σ = {1, 2, 3} 上按字典顺序计算下一个字符串的状态图会是什么样子?字符串大小为4,即---1、---2、---3、--11、--12等...
已经尝试从 Michael Sipser 的“计算理论导论”中弄清楚,但没有运气。还尝试在网上查找它,再次没有运气。
提前致谢!
java - 给定 2 个字符串,仅删除一位数字以使 1 个字符串按字典顺序更小
我正在尝试解决 Java 中字符串操作的编码问题。问题是
给定两个由数字和小写字母组成的字符串 S 和 T,您只能从任一字符串中删除一个数字,计算有多少种删除方式使 S 在字典上小于 T。
我自己想出了这个测试用例。如果 s = '3ab' 和 t = 'cd',返回 1。如果 s = '123ab' 和 t = '423cd',返回 6。
我的想法是使用 2 个 for 循环并通过检查字符是否为数字来遍历每个字符串,将其删除并与另一个字符串进行比较。
正如你所看到的,空间复杂度非常糟糕,而且代码也显得多余。有没有办法优化这段代码?有没有人看到不使用字符串生成器或每次都创建新字符串的方法?任何输入表示赞赏!
java - 如何实现字典序字符串转换器(最长递增子序列)?
我最近参加了某种 Java 语言的在线测试。
在一个问题中,我被要求实现一个函数,给定一个字符串将返回最少数量的字符,必须从字符串中删除这些字符才能获得新的按字典顺序排列的字符串。
这意味着,当我们将字符串“banana”传递给我们的方法时,它将返回 3。
从单词“banana”中,我们需要删除第一个字母(“b”)、第三个字母(“n”)和第六个字母(“a”),得到字符串“aan”。
不可能删除更少的字母。
我试图找出解决方案很长一段时间,但没有任何效果。
可以工作的一件事是检查原始字符串中的每个可能的子字符串,检查它是否已排序并比较删除的数字的数量,但对于较长的字符串来说会很糟糕。
对算法有什么想法吗?
algorithm - 没有连续重复的字典顺序
我知道字典顺序的算法,但是在这个问题中,我们可以不连续地重复字符。这让我感到困惑。
一个好的字符串 s 是:
- 仅包含以下字母:[a,b,c]
s[i] != s[i+1]
字符串 aba、bca、cbc 有效,但 aaa、abb、aab 无效。
集合顺序:[a, b, c]
你能帮我解决一下它的算法吗?
python - python:自定义排序:不是纯粹的字典顺序,而是反向和最短的共同优先
背景
我想反向排序但不严格按字典顺序排序,然后它变得更加奇怪..:P
原因是专有软件完全按照我在此处描述的方式解析目录,并且我想复制该行为。
要求(按此顺序)
- 两者:python2和python3兼容
- 反向词典
- 最短公共优先
示例数据
以下是该 python 脚本的(随机排序的)输入数据示例:
它应该是什么样子
我将它存储在一个列表中,并且需要对其进行排序,使其看起来像这样:
代码
根据我的理解sort()
并且sorted()
是按字典顺序排序的稳定函数。但是由于我需要满足上述所有要求,所以我被困在了 atm ..
问题是sort()
+reverse=True
单独是不够的,因为它不满足上述要求 3(最短优先):
我玩过groupby
按长度排序,但我一无所获(我的 python kl 没那么深).. :(
我想对于具有良好 python 知识的人来说,这非常容易做到。任何帮助表示赞赏!
python - 给定 n 和特定排列 s,按元素 1-n 的字典顺序找到下一个排列(python)
例如,假设我们有NextInOrder(10,(1,2,4,7))
,然后将这两个作为函数的输入,我希望编写一个 python 函数,该函数(1,2,4,8)
通过按字典顺序查找下一个排列来返回,其中排列的元素在范围内1-10
所以另一个例子NextInOrder(10, (5,3,2,10))
会返回(5,3,4,1)
sql-server - SQL Server:多列键字典顺序
我在数据库中有两列设置为主键,比如说Code1
和Code2
。我使用实体框架流利的 api 来创建这样的密钥:
我需要的是 key 按字典顺序排列。例如,当我在数据库中有记录时。
我尝试添加
我希望这被视为数据库的重复键,因此不允许添加它们。
谢谢您的帮助