在 C++ 中統計 ASCII 值之和小於和大於 k 的單詞數量


給定一個包含句子的字串 str 和一個數字 k。目標是找到 str 中 ASCII 值小於 k 的單詞數量以及 ASCII 值大於 k 的單詞數量。

ASCII - 賦予語言中每個字元的唯一程式碼數字。

讓我們透過示例來理解。

輸入 - str= “This is ASCII”。k=300

輸出 - ASCII 值之和小於 k 的單詞數量為 - 1

ASCII 值之和大於 k 的單詞數量為 - 2

解釋 - 單詞“is”的 ASCII 值小於 300,其他兩個也一樣。

輸入 - str= “set set set”。k=300

輸出 - ASCII 值之和小於 k 的單詞數量為 - 0

ASCII 值之和大於 k 的單詞數量為 - 3

解釋 - 所有單詞都相同,並且 ASCII 值都大於 300。

下面程式中使用的方法如下

我們將使用 for 迴圈遍歷字串 str。對於空格後的每個單詞,開始將 str[i] 新增到總和中。如果這 >k。增加計數。

  • 將字串作為 str,整數作為 k。

  • 函式 words_less_greater(string str, int k, int length) 獲取字串並返回 ASCII 值小於和大於 k 的單詞數量。

  • 將 temp 設為 0,表示 str 中每個單詞的 ASCII 值。

  • 將 count 設為 0,表示 ASCII 值小於 k 的單詞數量。

  • 將 total 設為 0,表示 k 中的單詞總數。

  • 使用 for 迴圈遍歷 str。

  • 對於每個空格後的單詞 str[i]==‘ ‘。將它的字元 str[i] 新增到 temp 中。在單詞結束之後,檢查 temp<k。如果是,則增加 count 和 total。

  • 如果不是,則僅增加 total。

  • 最後,count 包含 ASCII 值小於 k 的單詞數量。total - count 將是 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

更新於: 2020-12-01

116 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.