Решение Leetcode в нижнем регистре


Сложный уровень Легко
Часто спрашивают в саман Apple Google
строка

Проблема в нижнем регистре Leetcode Solution предоставляет нам строку и просит нас преобразовать все алфавиты верхнего регистра в алфавиты нижнего регистра. От нас требуется преобразовать все буквы верхнего или нижнего регистра в символы нижнего регистра. Итак, проблема кажется простой, но прежде чем приступить к ее решению. Разберем несколько примеров.

Решение Leetcode в нижнем регистре

"Hello"
"hello"

Объяснение: Входные данные содержат алфавит верхнего регистра «H», который преобразован в алфавит нижнего регистра «h». Остальные символы «ello» остаются такими же, и нам не нужно их преобразовывать.

"here"
"here"

Объяснение: Поскольку все алфавиты во вводе - символы нижнего регистра. Нам не нужно изменять какие-либо символы, и мы можем вернуть введенные данные без каких-либо изменений.

Подход с использованием встроенных функций

Задача To Lower Case Leetcode Solution попросила нас просто преобразовать символ верхнего регистра в символ нижнего регистра. Эту операцию легко выполнить с помощью встроенных функций языков программирования. Итак, мы можем использовать tolower () в C ++ или toLowerCase () в Java. Используя эти функции, нам нужно только передать заданное строка как вход. Затем мы получаем строку, в которой все символы в нижнем регистре.

Код:

Код C ++ для решения Leetcode в нижнем регистре

#include <bits/stdc++.h>
using namespace std;

string toLowerCase(string str) {
    transform(str.begin(), str.end(), str.begin(), [](unsigned char c){ return std::tolower(c); });
    return str;
}

int main(){
    cout<<toLowerCase("Hello");
}
hello

Код Java для решения Leetcode в нижнем регистре

import java.util.*;
import java.lang.*;
import java.io.*;

class Main {
    public static String toLowerCase(String str) {
        return str.toLowerCase();
    }
    
    public static void main (String[] args) throws java.lang.Exception
  {
      System.out.print(toLowerCase("Hello"));
  }
}
hello

Анализ сложности

Сложность времени

НА), встроенные методы также просматривают всю входную строку для преобразования данной строки в символы нижнего регистра.

Космическая сложность

О (1), так как нам не нужно ничего хранить. Сложность помещения постоянна.

Альтернативный подход к решению Leetcode в нижнем регистре

Альтернативный подход, который мы можем использовать, - числа ASCII. Мы можем просто создать функцию, которая проходит по заданной входной строке и проверяет, находится ли код ASCII символа между кодом ASCII от A до Z. Мы просто добавляем разницу между кодом ASCII a и A. Это изменит символ к соответствующему символу нижнего регистра. Но строки неизменяемы в java, поэтому нам нужно StringBuffer для выполнения задачи.

Код альтернативного подхода

Код C ++ для решения Leetcode в нижнем регистре

#include <bits/stdc++.h>
using namespace std;

string toLowerCase(string str) {
    for(int i=0;i<str.length();i++)
        if(str[i]>='A' && str[i]<='Z')
            str[i] = str[i] + ('a' - 'A');
    return str;
}

int main(){
    cout<<toLowerCase("Hello");
}
hello

Код Java для решения Leetcode в нижнем регистре

import java.util.*;
import java.lang.*;
import java.io.*;

class Main {
    public static String toLowerCase(String str) {
    	StringBuffer res = new StringBuffer();
        for(int i=0;i<str.length();i++)
        	if(str.charAt(i)>='A' && str.charAt(i)<='Z')
            	res.append((char)(str.charAt(i) + ('a' - 'A')));
            else
            	res.append(str.charAt(i));
    	return res.toString();
    }
    
    public static void main (String[] args) throws java.lang.Exception
  {
      System.out.print(toLowerCase("Hello"));
  }
}
hello

Анализ сложности

Сложность времени

НА), где N - размер данной строки. Поскольку нам нужно пройти всю строку; e, временная сложность зависит от размера ввода.

Космическая сложность

O (1) в C ++, потому что операция выполняется на месте. Объемная сложность всего алгоритма постоянна. Но это требует O (N) в Java потому что строки неизменяемы в java, и нам нужно создать новую строку для хранения результата.