2016-12-02 54 views
-4

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

+3

1.你到目前为止尝试过什么? StackOverflow不是“做我的作业”网站。 2.您正在编写汇编代码的哪个架构? –

+1

你会用高级语言做什么?基本算法不会在它和装配之间改变。目前还不清楚你在问什么。 – pcarter

+0

当我想要计算程序集中常见字符的数量时,我通常会编写一些代码。 :) –

回答

1

为了有效地做到这一点,您需要某种数据结构来记住您已经看过哪些字符。

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

+1

对于ASCII码,可以很容易地从一个字符串创建一个256条目存在/不存在的数组,然后检查另一个字符串的每个字符。要进行重复数据删除,请在打印后将存在条目重新设置为零。有趣的小算法设计问题。在asm中的实际实现很简单,对我来说这不是这个问题中有趣的部分。很高兴你只需要一些常见的字符,而不是根本不打印它们,更不用说任何顺序。我几乎也想回答它,即使认为这是一个可怕的问题,我们也不应该奖励懒惰的“做我的作业”问题。 –

+1

ASCII很简单,除非使用大量的内存,否则Unicode(UTF-8,16或32)并不那么简单。此外,为了找到正确的算法,您需要精确地陈述问题,即在编写TDD代码之前知道给定输入的输出。因此,如果您将ABBA与BABA进行比较,您是否期望2(A和B),4(第一次A两次,第一次B两次)或8(2 * 2 + 2 * 2)? –

+0

关于重复计数的重要一点,没有想到这一点。 –

相关问题