zoukankan      html  css  js  c++  java
  • 力扣(LeetCode)389. 找不同

    给定两个字符串 s 和 t,它们只包含小写字母。

    字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。

    请找出在 t 中被添加的字母。

    示例:

    输入:
    s = "abcd"
    t = "abcde"

    输出:
    e

    解释:
    'e' 是那个被添加的字母。

    思路 1.先将字符串排序,从小到大,然后逐一比较

    这种情况和1001个数,每个数字1~1000,有一个重复数字一样。可以使用异或法 或者作差法

    java 字符数组排序遍历查找 版

    class Solution {
        public char findTheDifference(String s, String t) {
            char[] cs = s.toCharArray();
            char[] ct = t.toCharArray();
            Arrays.sort(cs);
            Arrays.sort(ct);
            for(int i=0;i<cs.length;i++) {
                if(cs[i]!=ct[i]){
                    return ct[i];  
                }
            }
            return ct[ct.length-1];
        }
    }
    

    java 字符数组求和作差 版

    class Solution {
        public char findTheDifference(String s, String t) {
           char[] cs = s.toCharArray();
           char[] ct = t.toCharArray();
           int total = 0;
           for(int i=0;i<ct.length;i++) {
               total +=ct[i];
           }
           for(int i=0;i<cs.length;i++) {
               total -=cs[i];
           }
           return (char)total;
            
        }
    }
    

    java 字符数组异或 版

    class Solution {
        public char findTheDifference(String s, String t) {
           char[] cs = s.toCharArray();
           char[] ct = t.toCharArray();
           int total = 0;
           for(int i=0;i<ct.length;i++) {
               total ^=ct[i];
           }
           for(int i=0;i<cs.length;i++) {
               total ^=cs[i];
           }
           return (char)total;
            
        }
    }
    

    运行结果

  • 相关阅读:
    Nginx 基本命令
    Nginx配置详细
    MySQL 函数大全
    X-Frame-Options 配置
    Visual Studio提示“无法启动IIS Express Web服务器”的解决方法
    idea java 非web程序打包
    mysql 存储过程
    webstorm 重置所有设置
    vue input 赋值无效
    MySQL 性能优化神器 Explain 使用分析
  • 原文地址:https://www.cnblogs.com/lick468/p/10671415.html
Copyright © 2011-2022 走看看