【发布时间】:2013-03-10 10:39:47
【问题描述】:
给定两个字符串 S1 和 S2,S = S1 - S2 定义为从 S1 中取出 S2 中的所有字符后的剩余字符串。如何尽可能快地计算任何给定字符串的 S1 - S2?
例如:
输入:
他们是学生。
哎哟
输出:
你的标准。
hash map我试过了,可惜裁判说太慢了,有没有更快的解决方案?
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
bool occur[300]={false};
int main()
{
char str1[10002];
gets(str1);
char ch;
while((ch=getchar())!='\n')
occur[ch]=true;
int i;
for(i=0;i<strlen(str1);i++)
if(occur[str1[i]])
continue;
else
putchar(str1[i]);
putchar('\n');
return 0;
}
【问题讨论】:
-
“我已经尝试过哈希映射”——怎么样?有多种方法可以使用哈希表来解决这个问题。请描述您当前的算法。
-
同意 larsmans。此问题的最快解决方案必然涉及哈希映射或数组索引。
-
另外,虽然您没有指定语言,但我相信您已经编写了一个程序。添加您当前的实现。
-
我不认为我在某个方面,但如果你试着看看,你可以把它们拿出来 1) en.wikipedia.org/wiki/Diff#Algorithm 2) codeproject.com/Articles/13326/… 3)paulbutler.org/archives/a-simple-diff-algorithm-in-php 我认为这些可能会有所帮助,我早点见过他们
-
我在上面添加了我的代码,你们中的任何人都可以提出更好的解决方案吗?
标签: algorithm