小写Leetcode解决方案


难度级别 易得奖学金
经常问 土砖 Apple 谷歌

小写Leetcode解决方案问题为我们提供了一个字符串,并要求我们将所有大写字母转换为小写字母。 我们需要将所有大写或小写字母转换为小写字符。 因此,这个问题似乎很简单,但是在深入探讨解决方案之前。 我们来看几个例子。

小写Leetcode解决方案

"Hello"
"hello"

说明:输入具有大写字母“ H”,该字母被转换为小写字母“ h”。 其他字符“ ello”保持不变,我们无需对其进行转换。

"here"
"here"

说明:由于输入中的所有字母均为小写字符。 我们不需要更改任何字符,并且可以不做任何修改就返回输入。

使用内置功能的方法

小写Leetcode解决方案的问题要求我们简单地将大写字符转换为小写字符。 使用编程语言的内置函数可以轻松完成此操作。 因此,我们可以在C ++中使用tolower()或在Java中使用toLowerCase()。 使用这些功能,我们只需要传递给定的 绳子 作为输入。 然后,我们得到所有字符都小写的字符串。

代码

小写Leetcode解决方案的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

小写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(1), 因为我们不需要存储任何东西。 空间复杂度是恒定的。

小写Leetcode解决方案的替代方法

我们可以使用的另一种方法是ASCII码。 我们可以简单地创建一个遍历给定输入字符串的函数,并检查字符的ASCII码是否位于A到Z的ASCII码之间。我们只需添加ASCII码a和A之间的差即可。这将更改字符为其相应的小写字符。 但是字符串在Java中是不可变的,因此我们需要 字符串缓冲区 完成任务。

替代方法代码

小写Leetcode解决方案的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

小写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

复杂度分析

时间复杂度

上), 其中N是给定字符串的大小。 由于我们需要遍历整个字符串,因此时间复杂度取决于输入的大小。

空间复杂度

在C ++中为O(1), 因为操作是就地的。 整个算法的空间复杂度是恒定的。 但这需要 Java中的O(N) 因为字符串在Java中是不可变的,所以我们需要创建一个新的字符串来存储结果。