1. 程式人生 > >LeetCode 709.To Lower Case

LeetCode 709.To Lower Case

字母 put NPU 轉化 沒有 運行 des image 分享

Description

Implement function ToLowerCase() that has a string parameter str, and returns the same string in lowercase.

Example 1:
Input: "Hello"
Output: "hello"

Example 2:
Input: "here"
Output: "here"

Example 3:
Input: "LOVELY"
Output: "lovely"

My Submission

技術分享圖片

char* toLowerCase(char* str) {
    int i = 0;
    
    while(str[i] != '\0')
    {
        if(str[i] >= 'A' && str[i] <= 'Z')
            str[i] = str[i] + 32;
        i++;
    }
    return str;
}

解題思路

轉化大小寫,首先想到ASCII碼字母大小寫之間相差32,字符串又是以‘\0‘做為結束標識符的,所以循環當字符串沒到末尾時,如果有大寫字母就加上32並賦給當前字符,最後循環結束後返回指針。

遇到問題

剛開始不記得是小寫字母大以及大小寫相差多少,小寫字母 = 大寫字母 + 32;開始WA了一發是因為未判斷字符等於A和Z的情況,寫成了小於和大於。

Sample Submission

sample 0 ms submission

char* toLowerCase(char* str) {
    int c = 0;
    while (*(str+c) != '\0')
    {
        if (*(str+c) >= 'A' && *(str+c) <= 'Z')
        {
            *(str+c) = *(str+c) + 32;
        }
        c++;
   }    

    return str;
}
  • 指針操作可以加快運行速度?
  • *(str+c) = *(str+c) + 32換成*(str+c) += 32會增加運行時間?

sample 6460 kb submission

char* toLowerCase(char* str) {
    int i;
    for(i=0;str[i];i++){
        if(str[i]>='A'&&str[i]<='Z')
            str[i]+='a'-'A';
    }
    return str;
}
  • 並沒有減少內存空間,懷疑LeetCode判斷有問題???

LeetCode 709.To Lower Case