화웨이 시험 - 문자 개수 계산
9996 단어 화웨이기 시험 연습 기록
알파벳과 숫자로 구성된 문자열과 문자를 받아들인 다음 입력 문자열에 포함된 문자의 개수를 출력합니다.대소문자를 구분하지 않습니다.
자해하다
사고방식: 문자별 판단
#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