首页 > 代码库 > 389. Find the Difference
389. Find the Difference
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.
我的做法, hashMap, O(n) space, O(n) time:
public class Solution { public char findTheDifference(String s, String t) { if (t.length() == 1) { return t.charAt(0); } Map<Character, Integer> set = new HashMap<>(); Map<Character, Integer> map = new HashMap<>(); for (int i = 0; i < s.length(); i++) { set.put(s.charAt(i), set.getOrDefault(s.charAt(i), 0) + 1); map.put(t.charAt(i), map.getOrDefault(t.charAt(i), 0) + 1); } map.put(t.charAt(t.length() - 1), map.getOrDefault(t.charAt(t.length() - 1), 0) + 1); for (int i = 0; i < t.length(); i++) { if (!set.containsKey(t.charAt(i)) || set.get(t.charAt(i)) < map.get(t.charAt(i))) { return t.charAt(i); } } return ‘1‘; } }
用ascii 码表, 时间, 空间都是O(1) 学会转化: (int) s.charAt(i)
public class Solution { public char findTheDifference(String s, String t) { // Initialize variables to store sum of ASCII codes for // each string int charCodeS = 0, charCodeT = 0; // Iterate through both strings and char codes for (int i = 0; i < s.length(); ++i) charCodeS += (int)s.charAt(i); for (int i = 0; i < t.length(); ++i) charCodeT += (int)t.charAt(i); // Return the difference between 2 strings as char return (char)(charCodeT - charCodeS); } }
389. Find the Difference
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。