Найди отличия | Заметки по чистке LeetCode

задняя часть LeetCode
Найди отличия | Заметки по чистке LeetCode

Это 31-й день моего участия в августовском испытании обновлений. Узнайте подробности события:Испытание августовского обновления


Статьи по Теме

Резюме вопросов кисти LeetCode:Вопросы по кисти LeetCode

1. Описание темы


найти разницу

даны две строкиsа такжеt, они содержат только строчные буквы.

нитьtпо строкеsПроизвольно переставьте, затем добавьте букву в случайном месте.

Пожалуйста, найдите вtдобавлены буквы.

Начните чистить зубы с простых вопросов, тренируйте свои мыслительные способности и готовьтесь к интервью~

2. Анализ мыслей


  • Взгляните на пример заголовка, давайте взглянем на эту идею~

  • Пример 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 只包含小写字母
    
  • Это снова найти разницу, и теперь первая реакция на такую ​​тему — использовать хэш для ее достижения. но! Мне не нужно!

  • Молча придумать еще один глупый способ.

  • Так как второй символ всего на один больше первого.

  • Затем я заменяю все символы первого на второй, так что оставшийся лишний!

  • Хахаха, механизм похож на меня.

3. Код переменного тока


  • Заменить кряк:

    class Solution {
        public char findTheDifference(String s, String t) {
            //将其转成字符数组,方便遍历
            String[] strArr = s.split("");
            for (int i=0;i<strArr.length;i++){
                //因为有可能第二个增加的字符串会重复,所以这里使用replaceFirst只替换第一个字符
                t = t.replaceFirst(strArr[i],"");
            }
            return t.toCharArray()[0];
        }
    }
    
    • image-20210831175704755.png
    • Тск тск тск, хоть КПД и невыносимый, но эксплуатация все равно довольно эффектная!
  • Трещина битовой операции:

  • Вышеупомянутая операция Sao неэффективна, поэтому давайте решим эту проблему с помощью XOR.

  • Какие? Может ли этот вопрос также использовать XOR?

  • Оказывается, в t всего на одну букву больше, чем в s.

  • Затем мы соединили две строки вместе, тогда символ с нечетным числом вхождений должен быть тем, у которого больше символов!

    class Solution {
        public char findTheDifference(String s, String t) {
            char res = 0;
            for (char c: s.toCharArray()) {
                res ^= c;
            }
            for (char c: t.toCharArray()) {
                res ^= c;
            }
            return res;
        }
    }
    
    • image-20210831180109154.png
    • Взлетай немедленно!

4. Резюме

  • Есть тысячи идей для решения проблем, будь то хорошее решение или фантастическое решение, это хороший способ решить его! Кот с белым котом и черным котом, умеющим ловить мышей, — хороший кот!
  • Вот несколько других решений LeetCode для справки!
  • Нажмите, чтобы прыгнуть:официальное решение
  • Нажмите, чтобы прыгнуть:алгоритм рисования

Впереди долгий путь, и я обязательно буду его искать вдоль и поперёк~

Если вы думаете, что я блогеры хорошо пишу! Писать нелегко, пожалуйста, ставьте лайки, подписывайтесь и комментируйте, чтобы поощрять блоггеров ~ хахах