用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(stringstr,intlen,intw[])在页面中显示行数,在最后一行显示字符宽度。
将初始行数设为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