这是我参加8月更文应战的第31天,活动概略查看:8月更文应战


相关文章

LeetCode刷题汇总:LeetCode刷题

一、标题描绘


找不同

给定两个字符串 stleetcode是什么,它们只包含小写字母。

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

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

从简略标题开端刷,训练自己的思维能力,为面试预备~

二、思路剖析


  • 看看标题的示例,我们来理一异或门符号理这个思路~

  • 示例 1:

    输入:s = "abcd", t = "abcde"
    输出:"e"
    解说:字符数组'e' 是那个被添加的字母。
    
  • 示例2:

    输入:s = ""数组公式, t = "y"
    输出:"y"
    
  • 示例3:

    输入:s = "a", t = "aa"
    输出:"a"
    
  • 示例4:

    输入:s = "ae", t = "aea"
    输出:"a"
    
  • 提示:

    0 <= s.length <= 1000
    t.length == s.异或门符号length + 1字符数组和字符串的区别
    s 和 t算法导论 只包含小写字母
    
  • 又是找不同,,现在看到字符数组长度这种标题榜首反应就是运用hash来完结。可是!我不必!

  • 静静的想起来另一种笨比办法。

  • 既然第二个字符数组转字符串只比榜首个字符多一个。

  • 异或校验么我将榜首个的一切字符在第二个字符中替换掉,那么剩下的那个不就是多出来的那个了嘛!

  • 哈哈哈,机制如我。

异或门逻辑表达式、AC 代码


  • 替换破解:

    class So算法导论lution {
     public char findTheDifference(String s, String字符数组界说 t) {
       //将其转成字符数组,leetcode每日一题便利遍历
       String[] strArr = s.split("")异或运算;
       for (int i=0;i&异或门逻辑表达式lt;strArr.length;i++){
         //因为有或许第二个添加的字符串会重复,所以这儿运用replaceFirst只替换榜首个字符
         t = t.replaceFirst(strArr[i],"");
        }
       return t.toCharAleetcode高频100题rray()[0];
      }
    }
    
    • 找不同 | LeetCode刷题笔记
    • 啧啧啧,虽然功率不忍直视,可是操作仍是蛮骚的嘛!
  • 位运算破解:

  • 上面的骚操作功率较低,下面就来经过异或来处理本题。

  • 什么?这题还可以用异或?

  • 原来是因为t只比s多了一个字母。

  • 那么我们将两个字符串拼接起来,那么字符呈现奇数次leetcode官网的必定就是多了的那个字符呀!

    class Solution {
     public char findTheDifference(Strin字符数组的输入输出g s, String t) {
       char res = 0;
       fleetcode每日一题or (char c: s.toCharArray()) {
         r异或es ^= c;
        }
       for (char字符数组初始化 c: t.toCharArray()) {
         res ^= c;
        }
       return res;
      }
    }
    
    • 找不同 | LeetCode刷题笔记
    • 瞬间起飞!

四、总结

  • 解题算法思路千千万,不管是本办法还好,仍是奇思妙想的解法,能处理便字符数组界说LeetCode好办法!白猫黑猫能抓老鼠的猫就是好猫!
  • 这儿列几个LeetCode的其他大神的解法作为参看!
  • 点击跳转:官方解法
  • 点击跳转:画解算法

路漫漫其修远兮,吾必将上下求索~

假如你认为i博主写的不错!写作不易,请点赞、重视、议论给博主一个鼓动吧~hahah