Javascript 在两个字符串之间查找额外字符

Javascript 在两个字符串之间查找额外字符,javascript,java,string,algorithm,binary-tree,Javascript,Java,String,Algorithm,Binary Tree,如何以最佳方式在两个字符串之间找到额外字符 Ex1: S1 - 'abcd', S2 - 'abcxd', output - 'x' Ex2: S1 - '100001', S2 - '1000011', output - '1' 我们可以通过线性遍历并比较O(n)中的每个字符来实现这一点。我希望这是以一种更为优化的方式完成的,比如说在O(logn)基线方法(O(n)):只需在每个周期的两侧比较字符和缩小范围 函数findDiffChar(base,baseExtraChar){ 设extr

如何以最佳方式在两个字符串之间找到额外字符

Ex1: S1 - 'abcd', S2 - 'abcxd', output - 'x'
Ex2: S1 - '100001', S2 - '1000011', output - '1'
我们可以通过线性遍历并比较O(n)中的每个字符来实现这一点。我希望这是以一种更为优化的方式完成的,比如说在
O(logn)
基线方法(O(n)):只需在每个周期的两侧比较字符和缩小范围

函数findDiffChar(base,baseExtraChar){
设extraLastIndex=base.length;
设lastIndex=extraLastIndex-1;
for(设i=0;ilog(findDiffChar('fooooar','foooobar');//B
您确定只有一个xtra字符吗?是。只有1个字符。只需要找到那个额外的角色。从两边攻击,直到一方不同。或者,您可以让这两个字符数组使用每个字符的差异结果生成一个新数组(使用
charCodeAt()
)。第一个非零是diff。你可以想出一些分而治之的方法。检查字符串的中间部分。如果此字母不同,则您知道附加字符是此字母或此位置之前的字符。但如果他们是平等的,你就什么也得不到。因此,最坏的情况仍然是线性的。我很确定你做得再好不过了。@SamHazleton,这是不正确的,因为字符串'abbba'和'aabbba'会让你检查中间字符的右边。但这仍然是线性的。O(n)@user34229使用替代递归策略更新。