Leetcode шийдлийг багасгах


Хэцүү байдлын түвшин Easy
Байнга асуудаг Adobe Apple-ийн Google-ийн
String

To Leasing Code Leetcode Solution гэсэн асуудал нь биднийг мөрөөр хангаж, бүх том үсгийн үсгийг жижиг үсэг болгон хөрвүүлэхийг биднээс хүсдэг. Бид бүх том эсвэл жижиг үсгүүдийг жижиг үсгийн тэмдэгт болгон хөрвүүлэх шаардлагатай. Тиймээс, асуудал энгийн мэт боловч шийдэлд шумбахаасаа өмнө. Бид цөөн хэдэн жишээг авч үзье.

Leetcode шийдлийг багасгах

"Hello"
"hello"

Тайлбар: Оролт нь том үсгийн 'H' үсэг бөгөөд үүнийг жижиг үсэг 'h' үсэг болгон хөрвүүлдэг. Бусад дүрүүд “ello” хэвээр байгаа тул бид тэдгээрийг хөрвүүлэх шаардлагагүй болно.

"here"
"here"

Тайлбар: Оруулсан бүх цагаан толгой нь жижиг үсгийн тэмдэгтүүд байдаг тул. Бид ямар ч тэмдэгтийг өөрчлөх шаардлагагүй бөгөөд оролтыг ямар ч өөрчлөлтгүйгээр буцааж өгөх боломжтой.

Суурилуулсан функцуудыг ашиглах арга

To Leasing Code Leetcode Solution гэсэн асуудал нь биднээс том үсгийн тэмдэгтийг жижиг үсэг болгон хувиргахыг хүссэн. Энэ үйлдлийг програмчлалын хэл дээр суурилагдсан функцуудыг ашиглан хялбархан хийж болно. Тиймээс бид C ++ дээр tolower (), эсвэл Java дээр toLowerCase () ашиглаж болно. Эдгээр функцийг ашиглан бид зөвхөн өгөгдсөн зүйлийг дамжуулах хэрэгтэй мөр оролт болгон. Дараа нь бид бүх тэмдэгтүүдтэй мөрийг жижиг үсгээр авна.

код

To Leverage Case Leetcode Solution-т зориулсан C ++ код

#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

To Leasing Case Leetcode шийдлийн Java код

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

Нарийн төвөгтэй байдлын шинжилгээ

Цаг хугацааны нарийн төвөгтэй байдал

O (N), угсарсан аргууд нь өгөгдсөн мөрийг жижиг үсгийн тэмдэгт болгон хөрвүүлэхийн тулд оролтын мөрийг бүхэлд нь туулах болно.

Сансрын нарийн төвөгтэй байдал

O (1), Учир нь бид юу ч хадгалах шаардлагагүй болно. Сансрын нарийн төвөгтэй байдал нь тогтмол байдаг.

Leetcode шийдлийг багасгах хувилбарын өөр арга

Бидний ашиглаж болох өөр арга бол ASCII тоо юм. Бид өгөгдсөн оролтын мөрийг дайран өнгөрөх функцийг үүсгэж, тэмдэгтийн ASCII код нь A-аас Z хүртэлх кодын хооронд байгаа эсэхийг шалгана. Бид зүгээр л ASCII кодын хоорондох ялгааг нэмж оруулна. Ба тэмдэгт өөрчлөгдөнө. харгалзах жижиг үсгийн тэмдэгтэд. Гэхдээ мөрүүд java-д өөрчлөгддөггүй тул бидэнд хэрэгтэй StringBuffer энэ ажлыг дуусгах.

Альтернатив хандлагын код

To Leverage Case Leetcode Solution-т зориулсан C ++ код

#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

To Leasing Case Leetcode шийдлийн Java код

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

Нарийн төвөгтэй байдлын шинжилгээ

Цаг хугацааны нарийн төвөгтэй байдал

O (N), энд N нь өгөгдсөн мөрний хэмжээ юм. Бид мөрийг бүхэлд нь туулах хэрэгтэй тул цаг хугацааны нарийн төвөгтэй байдал нь оролтын хэмжээнээс хамаарна.

Сансрын нарийн төвөгтэй байдал

O (1) C ++ дээр, Учир нь үйл ажиллагаа нь газар дээрээ байгаа. Бүхэл бүтэн алгоритмын орон зайн нарийн төвөгтэй байдал тогтмол байдаг. Гэхдээ энэ нь шаардлагатай Java дахь O (N) мөрүүд java-д өөрчлөгддөггүй тул бид үр дүнг хадгалах шинэ мөр үүсгэх хэрэгтэй.