เราได้รับสตริง str พร้อมประโยคและตัวเลข k เป้าหมายคือการหาจำนวนใน str ที่มีค่า ascii น้อยกว่า k และคำที่มีค่า ascii มากกว่า k
ASCII − รหัสที่ไม่ซ้ำเป็นตัวเลขที่กำหนดให้กับอักขระแต่ละตัวในภาษา
ให้เราเข้าใจด้วยตัวอย่าง
ป้อนข้อมูล − str=“นี่คือ ASCII” k=300
ผลผลิต − การนับจำนวนคำที่มีค่า ASCII รวมกันน้อยกว่า k คือ − 1
จำนวนคำที่มีค่า ASCII มากกว่า k คือ − 2
คำอธิบาย − คำว่า “คือ” มี ascii น้อยกว่า 300 ตัวและอีก 2 ตัว
ป้อนข้อมูล − str=“เซตเซ็ตเซ็ต” k=300
ผลผลิต − จำนวนคำที่มีค่า ASCII น้อยกว่า k คือ − 0
จำนวนคำที่มีค่า ASCII มากกว่า k คือ − 3
คำอธิบาย - ทุกคำเหมือนกันและมี ascii มากกว่า 300
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
เราจะสำรวจสตริง str โดยใช้ for loop สำหรับแต่ละคำหลังเว้นวรรค ให้เริ่มเพิ่ม str[i] ให้กับผลรวม ถ้านี่คือ>k จำนวนที่เพิ่มขึ้น
-
ใช้สตริงเป็น str และจำนวนเต็มเป็น k
-
ฟังก์ชัน word_less_greater(string str, int k, int length) รับสตริงและส่งกลับจำนวนคำที่มี ascii น้อยกว่าและมากกว่า k
-
ใช้ temp เป็น 0 สำหรับ ascii ของแต่ละคำใน str.
-
นับเป็น 0 สำหรับการนับคำที่มี ASCII น้อยกว่า k
-
รวมเป็น 0 สำหรับคำทั้งหมดใน k.
-
Traverse str ใช้สำหรับวนซ้ำ
-
สำหรับแต่ละคำหลังช่องว่าง str[i]==‘ ‘ เพิ่มอักขระ str[i] ไปที่ temp หลังจากจบคำ ให้ตรวจสอบว่า temp
-
ถ้าไม่เพิ่มยอดทั้งหมดเท่านั้น
-
ในตอนท้าย การนับมีจำนวนคำที่มี ASCII น้อยกว่า k รวม - นับจะเป็นคำที่มี ascii มากกว่า k.
-
พิมพ์ผล
ตัวอย่าง
#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