LeetCode #520 DetectCapital. Algorithm,알고리즘,LeetCode,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive,datastructure,techinterview,coding,코딩인터뷰,기술면접
문제 자체는 단순히 조건문으로만 풀 수 있는데, if if if 들어가는게 별로 보기 좋진 않음
최초 한바퀴에 전체 대/소문자 나타내는 bit 이나 map 을 만들어놓고 해볼까 하다가 성능이 더 좋을 것 같진 않아서 그냥 풀었는데
if 분기 많이 하긴 했는데도 퍼포먼스는 100% 나옴
LeetCode #520
Q.
Given a word, you need to judge whether the usage of capitals in it is right or not.
We define the usage of capitals in a word to be right when one of the following cases holds:
- All letters in this word are capitals, like "USA".
- All letters in this word are not capitals, like "leetcode".
- Only the first letter in this word is capital if it has more than one letter, like "Google".
주어진 단어에서, 대문자가 제대로 사용되었는지 확인할 필요가 있다.
제대로된 대문자 사용법은 다음과 같다.
1. 모든 문자가 대문자 "USA"
2. 모든 문자가 소문자 "leetcode"
3. 제일 처음 문자만 대문자고 나머지는 소문자 "Google"
이 외에는, 대문자를 제대로 썼다고 정의하지 않는다.
e.g.
Example 1:
Example 2:
Process
// Process
//1. Input string word
//2. Check if it starts with capital character
// 2.1. If so -> Check if rest of the word are all capital or lowercase letter
// 2.2. If not -> Check if rest of the word are all lowercase
//3. Return answer
// 처리과정
//1. 문자열을 입력받는다.
//2. 대문자로 시작하는지 확인해서
// 2.1. 대문자로 시작하면 -> 나머지가 전부 대문자인지, 아니면 전부 소문자인지 확인한다.
// 2.2. 소문자로 시작하면 -> 나머지가 전부 소문자인지 확인한다.
//3. 결과 반환한다.
Code.. lemme see example code!!!
코드.. 예제코드를 보자!!!
#include <string>
#include <iostream>
using namespace std;
class Solution {
private :
bool isUpperCaseLetter(char letter) {
return (letter >= 65 && letter <= 90);
}
bool isLowerCaseLetter(char letter) {
return (letter <= 122 || letter >= 97);
}
public:
bool detectCapitalUse(string word) {
bool result = true;
if (word.size() > 0)
{
if (isUpperCaseLetter(word[0])) // capital
{
if (word.size() > 1)
{
if (isUpperCaseLetter(word[1]))
{
for (int i = 2; i < word.size(); ++i)
{
if (word[i] > 90 || word[i] < 65)
result = false;
}
}
else if (isLowerCaseLetter(word[1]))
{
for (int i = 2; i < word.size(); ++i)
{
if (word[i] > 122 || word[i] < 97)
result = false;
}
}
}
}
else if (isLowerCaseLetter(word[0])) // lowercase
{
for (int i = 1; result && i < word.size(); ++i)
{
if (word[i] > 122 || word[i] < 97)
result = false;
}
}
}
return result;
}
};
int main(int argc, char *argv[]) {
Solution sln;
cout << sln.detectCapitalUse("Leetcode") << endl;
}
Something else you might like...?
2019/01/25 - [Life/Health care] - L-Arginine 아르기닌 usage/side effects/dosage 효능/부작용/성인,소아 용법(3)
2018/12/16 - [Life/Health care] - L-Arginine 아르기닌 usage/side effects/dosage 효능/부작용/성인,소아 용법(2)
2018/12/26 - [Life/Health care] - Selenium 셀레늄 usage/side effects/dosage 효능/부작용/성인,소아 용법