문장과 숫자 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