讨论/求职面试/找出两个字符串新增的字符,求最优解答?/
找出两个字符串新增的字符,求最优解答?

找出两个字符串新增的字符

存在两个字符串,a和b,均是小写字符。b是由a中的字符自由组合的,并随机在任一位置插入了新字符c。求解找出新字符c的最优解?


例子

如:

输入

x="abc"
y="dbac"

输出

d
共 6 个回复

异或就OK了

2
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
#include <string.h>
using namespace std;
const int maxn = 100;
char S[maxn], temp[maxn];
int main()
{
    int n, m;
    scanf("%d%d", &n, &m);
    scanf("%s", S);
    scanf("%s", temp);
    char leftstr;
    
    for (int i = 0; i < m; i++)
    {
        int flag=0;
        for (int j = 0; j < n; j++)
            if (temp[i] != S[j])
                flag++;
        
        if (flag >= n)
            leftstr = temp[i];
    }
    printf("%c",leftstr);
    return 0;
}
1
def F(a, b):
    return chr(__import__("functools").reduce(operator.__xor__, map(ord, a + b)))
a, b = "abc", "dbac"
print(F(a, b))
1

def find_new3(str1,str2):
left=0
right = (int)(len(str2))
mid = (left+right)//2

if not str1 or not str2 or str2.find(str1) ==-1:
    raise ValueError('The parameter is wrong')
while True:
    if str1.find(str2[0:mid]) ==-1:
        str2=str2[0:mid]
        mid=len(str2)//2
    else:
        str2=str2[mid:]
        mid=len(str2)//2
    if len(str2) ==1 and str1.find(str2) ==-1:
        return str2

解法一:

package main

import (
	"fmt"
)

func FindNew(s, t string)  byte {
	for i:=0;i<len(t);i++{
		for j:=0;j<len(s);j++{
			if t[i] != s[j]{
				return t[i]
			}
		}
	}
	return 0
}

func main()  {
	s:="abc"
	t:="dbac"
	var result [1]byte
	result[0]= FindNew(s, t)
	fmt.Println(string(result[0:]))
}

题目有陷阱,没说用没用全部的 a 字母,如果是部分,可能不行....最简单就是 set()求差集.