Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 如何在汇编中找到两个输入字符串的公共字符数?_String_Algorithm_Assembly - Fatal编程技术网

String 如何在汇编中找到两个输入字符串的公共字符数?

String 如何在汇编中找到两个输入字符串的公共字符数?,string,algorithm,assembly,String,Algorithm,Assembly,我需要比较两个输入字符串并在汇编中显示常用字符的数量,但我找不到如何做到这一点。要有效地进行比较,您需要某种数据结构来记住已经看到的字符 如果您不介意重复并且不需要效率,您可以循环第一个字符串,对于每个字符,循环第二个字符串并比较它们(当它们匹配时将一个添加到寄存器或变量)。1。到目前为止你试过什么?StackOverflow不是“做我的家庭作业”网站。2.您为哪种体系结构编写汇编代码?您将如何使用高级语言?基本算法在它和汇编之间不会改变。不清楚您到底在问什么。当我想计算汇编中的常用字符数时,我

我需要比较两个输入字符串并在汇编中显示常用字符的数量,但我找不到如何做到这一点。

要有效地进行比较,您需要某种数据结构来记住已经看到的字符


如果您不介意重复并且不需要效率,您可以循环第一个字符串,对于每个字符,循环第二个字符串并比较它们(当它们匹配时将一个添加到寄存器或变量)。

1。到目前为止你试过什么?StackOverflow不是“做我的家庭作业”网站。2.您为哪种体系结构编写汇编代码?您将如何使用高级语言?基本算法在它和汇编之间不会改变。不清楚您到底在问什么。当我想计算汇编中的常用字符数时,我通常会编写一些代码。:)对于ASCII,从一个字符串创建256个条目的存在/不存在数组很容易,然后检查另一个字符串的每个字符。要消除重复数据,请在打印后将状态条目设置回零。有趣的小算法设计问题。asm中的实际实现非常简单,对我来说,这根本不是这个问题中有趣的部分。很好,您只需要普通字符的数量,根本不需要打印它们,更不用说按任何顺序打印了。我几乎也想回答这个问题,甚至认为这是一个可怕的问题,我们不应该奖励懒惰的“做我的家庭作业”问题。ASCII很简单,Unicode(UTF-8、16或32)没有那么简单,除非你使用大量内存。此外,为了找到正确的算法,您需要精确地陈述问题,即在编写代码a la TDD之前,了解给定输入的输出。所以,如果你将ABBA和BABA进行比较,你期望的是2(A&B),4(第一个A两次,第一个B两次)还是8(2*2+2*2)?关于重复是否计数的关键点,我没有想到。在asm中处理字符的家庭作业总是谈论ASCII字节。即使有大量的内存,仅仅解码一个可变长度的编码,比如UTF-8(或者UTF-16,现在unicode已经超过了16位),也会非常复杂。但是,是的,使用UTF-32就很容易了,至少在64位系统上,您可以轻松地拥有4G阵列。假设它是ASCII,并且您希望忽略重复项,我将使用两个256位的字,解析第一个字符串,并为找到的每个字符将第一个字的位设置为1。我会对第二个单词和第二个字符串执行相同的操作,然后在这两个单词之间执行二进制and。