문장과 숫자 k가 포함된 문자열 str이 제공됩니다. 목표는 k보다 작은 ascii 값을 갖는 in str과 k보다 큰 ascii 값을 가진 단어의 수를 찾는 것입니다.
ASCII − 언어의 각 문자에 할당된 고유 코드입니다.
예를 들어 이해합시다.
입력 - str="이것은 ASCII입니다". k=300
출력 − ASCII 값의 합이 k보다 작은 단어의 개수는 − 1
k보다 큰 ASCII 값의 합을 갖는 단어 수는 - 2
설명 - "is"라는 단어에는 300개 미만의 ASCII가 있고 다른 두 개는 더 있습니다.
입력 - str="세트 세트 세트". k=300
출력 − ASCII 값의 합이 k보다 작은 단어의 개수는 − 0
k보다 큰 ASCII 값의 합을 갖는 단어의 개수는 - 3입니다.
설명 − 모든 단어가 동일하며 ASCII가 300개 이상입니다.
아래 프로그램에서 사용한 접근 방식은 다음과 같습니다.
for 루프를 사용하여 문자열 str을 탐색합니다. 공백 뒤의 각 단어에 대해 총계에 str[i]를 추가하기 시작합니다. 이것이>k인 경우. 증분 카운트.
-
문자열을 str로, 정수를 k로 취합니다.
-
함수 words_less_greater(string str, int k, int length)는 문자열을 가져와서 k보다 크고 작은 ascii가 있는 단어 수를 반환합니다.
-
str의 각 단어의 ascii에 대해 temp를 0으로 취하십시오.
-
ASCII가 k보다 작은 단어 수는 0으로 간주합니다.
-
k의 총 단어는 총계를 0으로 합니다.
-
for 루프를 사용하여 str을 탐색합니다.
-
공백 뒤의 각 단어에 대해 str[i]==' '. temp에 str[i] 문자를 추가합니다. 단어가 끝나면 temp
-
증가하지 않는 경우 합계만 증가합니다.
-
마지막에 카운트는 k보다 작은 ASCII를 갖는 단어의 수를 가집니다. total - count는 k보다 큰 ascii가 있는 단어입니다.
-
결과를 인쇄합니다.
예시
#include <bits/stdc++.h> using namespace std; void words_less_greater(string str, int k, int length){ int temp = 0; int total = 0; int count = 0; for (int i = 0; i < length; ++i){ if (str[i] == ' '){ if (temp < k){ count++; } temp = 0; total++; } else{ temp += str[i]; } } total++; if (temp < k){ count++; } cout<<"Count of number of words having sum of ASCII values less than k are: "<< count; cout<<"\nCount of number of words having sum of ASCII values greater than k are: "<< total - count; } int main(){ string str = "tutorials point"; int k = 900; int length = str.length(); words_less_greater(str, k, length); return 0; }
출력
위의 코드를 실행하면 다음 출력이 생성됩니다 -
Count of number of words having sum of ASCII values less than k are: 1 Count of number of words having sum of ASCII values greater than k are: 1