화웨이 시험 - 문자 개수 계산

제목 설명
알파벳과 숫자로 구성된 문자열과 문자를 받아들인 다음 입력 문자열에 포함된 문자의 개수를 출력합니다.대소문자를 구분하지 않습니다.
자해하다
사고방식: 문자별 판단
#include 
#include 
using namespace std;
int main()
{
    string str = "";
    while(cin >> str) //        while(getline(cin, str))  ,         、  ,     
    {
        char ch = '\0';
        cin >> ch;
        int i = 0;
        int count = 0;
        while(str[i] != '\0')
        {
            if((ch == str[i]) || (ch - 32 == str[i]) || (ch + 32 == str[i]))
            {
                ++count;
            }
            ++i;
        }
        cout << count << endl;
    }
    return 0;
}

속도: 3ms 크기: 484K
기타
사고방식: 사용자 정의 계수 함수.라이브러리 함수 이용하기findfirst_of () 문자열에서 지정한 문자의 위치를 찾습니다. 하나를 찾을 때마다findfirst_of () 의 재부팅입니다. 지정한 문자의 위치를 앞에서 찾은 다음에 찾습니다. 이렇게 순환합니다.
#include 
#include 
 
int count_char(std::string& str, char c)
{
    std::size_t found = str.find_first_of(c);
    int count = 0;
    while (std::string::npos != found)  // npos    str      c
    {
        count++;
        found = str.find_first_of(c, found + 1); //       +1     
    }
 
    return count;
}
 
int main(int argc, char* argv[])
{
    std::string str;
    char c = 0;
    std::getline(std::cin, str);
    std::cin >> c;
    int count = count_char(str, c);
    if (c >= 'A' && c <= 'Z') 
    {
      count += count_char(str, c + 'a' - 'A');
    } else if (c >= 'a' && c <= 'z') 
    {
      count += count_char(str, c + 'A' - 'a');
    }
    std::cout << count << std::endl;
    return 0;
}

속도:<1ms 크기:242K

좋은 웹페이지 즐겨찾기