오늘의 도전 #20 - 소문자로.

안녕하세요 여러분!

my coding diary의 또 다른 판(20일)에 오신 것을 환영합니다. 여기에서 내가 하는 일에 대해 생각하고 있을지도 모릅니다. 그래서 저는 매일 도전을 해결하고 흥미로운 접근 방식과 저의 학습을 공유합니다.

자, 오늘의 문제 설명으로 바로 넘어갑시다!


오늘의 문제 - To Lower Case

태그 - 쉬움

문자열s이 주어지면 모든 대문자를 동일한 소문자로 바꾼 후 문자열을 반환합니다.

예 1:

입력: s = "안녕하세요"
출력: "안녕하세요"

문제를 반복할 필요조차 없습니다. 누구나 얻을 수 있는 간단한 도전입니다. 잠깐만요. 몇 초 안에 해결될 수 있다는 것을 압니다. 하지만 저를 믿으세요. 우리는 정말 멋진 통찰력에 대해 논의할 것입니다.

이 문제에 대한 몇 가지 솔루션이 있습니다.

가장 먼저, 가장 간단한 솔루션

class Solution {
public:
    string toLowerCase(string s) {
        for(int i=0;i<s.length();i++) {
            s[i] = tolower(s[i]);
        }
        return s;
    }
};



죄송합니다. 내장 기능을 사용한다고 해서 저를 벌하지 마세요.

ASCII가 구하러 온다

class Solution {
public:
    string toLowerCase(string s) {
        for(int i=0;i<s.length();i++) {
            if(int(s[i]) >= 65 && int(s[i]) <= 90) s[i] += 32;
        }
        return s;
    }
};


꽤 직설적 인!

Tip for C++ beginners: Use int() to convert char to decimal and use char() to convert, a number to ASCII Char.



나는 보통 A , Z , a , z 의 정확한 ASCII 코드를 기억하기 위해 고군분투합니다. 그래서, 나는 이것을했다 -

class Solution {
public:
    string toLowerCase(string s) {
        for(int i=0;i<s.length();i++) {
            if(s[i] >= 'A' && s[i] <= 'Z') s[i] += 32;
        }
        return s;
    }
};


아, 가끔 그 차이가 32인지 기억조차 나지 않을 때가 있습니다. 그래서,

if(s[i] >= 'A' && s[i] <= 'Z') s[i] = s[i] - 'A' + 'a';



여기에 더 최적화하기 위한 재미있는 접근 방식이 있습니다.

비교를 최적화하기 위해 다음을 사용하는 대신 -

if(s[i] >= 'A' && s[i] <= 'Z')


우리는 할 수 있습니다,

if(s[i] <= 'Z' && s[i] >= 'A')


따라서 모든 소문자에 대해 if 조건의 첫 번째 검사 자체에서 거부됩니다. 하나의 비교가 저장되었습니다! (드럼롤 주세요)

내가 여기에서 너무 까다롭다는 것을 알고 있지만 그것이 내가 더 최적화한 방법입니다. 말할 것도 없이, 내 런타임은 제출물의 100%를 능가합니다.

One guy solved it using bit manipulation. Insane!




my coding diary의 이전 버전을 좋아할 수 있습니다.
  • Day #19 - N-Repeated Element in Size 2N Array.
  • Day #18 - Count Negative Numbers in a Sorted Matrix.
  • Day #17 - Sum of Unique Elements.
  • Day #16 - Best Time to Buy and Sell Stock.
  • Day #15 - Count Number of Pairs With Absolute Difference K.
  • Day #14 - Minimum Number of Operations to Move All Balls to Each Box.
  • 좋은 웹페이지 즐겨찾기