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;
            
        }
    }
    

    运行结果

  • 相关阅读:
    day1-字符串拼接、表达式、break和continue
    ssh免密登录
    1-5 文档的基本 CRUD 与批量操作
    1-4 安装logstash
    1-3 安装cerebro
    1-2 kibana 7.5.1 安装配置
    1-1 elasticsearch7.5 集群搭建 es 7
    生产环境k8s集群搭建
    Gearman任务分布系统部署windows平台_使用Cygwin
    [转载]单元测试之道(使用NUnit)
  • 原文地址:https://www.cnblogs.com/lick468/p/10671415.html
Copyright © 2011-2022 走看看