题目:
Given two strings s and t which consist of only lowercase letters.
String t is generated by random shuffling string s and then add one more letter at a random position.
Find the letter that was added in t.
Example:
Input: s = "abcd" t = "abcde" Output: e Explanation: 'e' is the letter that was added.
翻译:
给定两个只包含小写字母的字符串 s 和 t 。
字符串 t 由字符串 s 中的字符随机打乱并在任意位置多加入一个字母构成。
找到 t 中多加入的那个字母。
例子:
输入: s = "abcd" t = "abcde" 输出: e 解释: 'e' is the letter that was added.
思路:
同样用 map 映射来做,但是这次先映射 t 中的字母及出现的次数,然后和 s 中的匹配,最后剩下的就是 t 中多加的字符了。
C++代码(Visual Studio 2017):
#include "stdafx.h" #include <iostream> #include <string> #include <map> using namespace std; class Solution { public: char findTheDifference(string s, string t) { map<char, int> m; for (int i = 0; i < t.size(); i++) { m[t[i]]++; } for (int i = 0; i < s.size(); i++) { m[s[i]]--; } for (int i = 0; i < t.size(); i++) { if (m[t[i]] > 0) return t[i]; } return NULL; } }; int main() { Solution s; string str="a"; string t="aa"; char result; result = s.findTheDifference(str, t); cout << result; return 0; }