用C ++编写给定String所需的行数

给我们一个字符串Str的字母和一个数组widths [],其中包含所有英文字母的宽度。目的是找到在宽度为10个字符的页面上打印此字符串所需的行数。同时打印剩余字符。

如果总和> = 10,则我们将遍历当前字符的字符串检查宽度并将其添加。

让我们通过示例来理解。

输入值 

Str = "ababababab"
widths[] = {2, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1, 1, 1, 1, 1, 3, 1, 1, 1, 2, 1, 1, 1};

输出结果 

Count of lines: 2 Remaining width: 6

说明 

line 1 : ababab ( 2+1+2+1+2+1 = 3+3+3=9)
line 2 : abab (2+1+2+1)

输入值 

Str = "bbbbbbbbbbdd"
widths[] = {2, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1, 1, 1, 1, 1, 3, 1, 1, 1, 2, 1, 1, 1};

输出结果 

Count of lines: 2 Remaining width: 2

说明 

line 1 : bbbbbbbbbb (1+1+1+1+1+1+1+1+1+1=10)
line 2 : dd (1+1)

以下程序中使用的方法如下

  • 我们有一个字符串Str和每个字母的空格数组widths []。

  • 函数numberOfLines(string str,int len,int w [])在页面中显示行数,在最后一行显示字符宽度。

  • 将初始行数设为numoflines = 0。

  • 取初始的最后一条线宽度为保持= 0

  • 使用for循环遍历字符串str。

  • 以当前字符c作为str [i]。

  • 将c的宽度检查为num = width [c-'a']。

  • 添加此数字即可保留。

  • 如果仍然> = 10,则增加行数并更新为num。

  • 在for循环的末尾打印结果。

示例

#include <bits/stdc++.h>
using namespace std;
//函数返回所需的行数
void numberOfLines(string str,int len, int w[]){
   int numoflines = 0;
   int remain = 0;
   //遍历字符串
   for (int i=0;i<len;i++){
      char c=str[i]; //current character
      int num = w[c - 'a']; //units for current character remain += num;
      if (remain >= 10){
         numoflines+=1;
         remain = num;
      }
   }
   cout<<"Count of lines: "<<numoflines;
   cout<<endl<<"Remaining width: "<<remain;
}
int main(){
   string Str = "abcdefghijklmnop";
   int length=Str.length();
   int widths[] = {2, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 2, 1, 1, 1};
   numberOfLines(Str,length,widths);
   return 0;
}

输出结果

如果我们运行上面的代码,它将生成以下输出-

Count of lines: 3
Remaining width: 1