Постановка задачи.Даны две строки s1 и s2, содержащие как прописные, так и строчные буквы. Строка s2 генерируется путем случайного перемешивания строки s1 с последующим добавлением одной дополнительной буквы в любой случайной позиции. Задача состоит в том, чтобы найти ту лишнюю букву, которая позже была добавлена ​​к строке s2.

EXAMPLE 1:	s1 = "gfg"		s2 = "gmgf"
Ans: m
EXPLANATION: The added letter is m
EXAMPLE 2:	s1 = "GFGistheBest"		s2 = "GeFtGhLBietss"
Ans: L
EXPLANATION: The added letter is L

Поскольку к перемешанной строке добавляется только один символ, мы можем использовать для этой цели XOR. Вот реализованный код на C и C++

C++

#include<bits/stdc++.h>
using namespace std;
char diff_str(string s,string t)
{
    char r=0;
    for(char c:s)r^=c;
    for(char c:t)r^=c;
    return r;
}
int main()
{
    char c = diff_str("GFGistheBest","GeFtGhLBietss");
    cout<<c;
    return 0;
}

C

#include<stdio.h>
#include<string.h>
char diff_str(char s[],char t[])
{
    char r=0;
  for(int i=0;i<strlen(s);i++)
  {
    r^=s[i];
  }
  for(int i=0;i<strlen(t);i++)
  {
    r^=t[i];
  }
  
    return r;
}
int main()
{
    char c = diff_str("GFGistheBest","GeFtGhLBietss");
    printf("%c",c);
    return 0;
}
OUTPUT: L

Временная сложность = O(n)

Пространственная сложность = O(1)