C++ 通过用给定的字符替换给定字符串的前缀来找到形成的字符串
在这个问题中,我们将从给定的字符串中形成一个三角形。三角形将包含行数等于字符串长度减1,并且在每一行中,我们将以”.”字符替换与行号相等的起始字符。
我们可以使用循环来形成字符串的每一行,也可以使用字符串构造函数和substr()方法。
问题陈述 - 我们已经给出了一个字符串alpha。我们需要以三角形的模式打印字符串。我们需要以alpha字符串开始三角形,并用’.’替换前一个字符串的第一个字符以显示它为三角形。
样例例子
输入
alpha = 'abc'
输出
abc
.bc
..c
解释 - 在第一行中,它打印字符串。在第二行中,它替换第一个字符,在第三行中,它替换前两个字符。
输入
alpha = 'c'
输出
c
解释 - 它打印出单个字符的输出。
输入
alpha = “tutorials”
输出结果
tutorials
.utorials
..torials
...orials
....rials
.....ials
......als
.......ls
........s
方法1
在这种方法中,我们将遍历字符串,在每次迭代中,我们将用’.’字符替换循环索引-1的字符,并保留其他字符。
算法
步骤1 - 将’str_len’初始化为字符串的长度。
步骤2 - 开始遍历字符串。
步骤3 - 初始化’temp’字符串以存储结果字符串。
步骤4 - 使用嵌套循环进行0到p-1次迭代,以附加总共p-1个’.’字符。
步骤5 - 使用for循环将字符串的第p个索引到len-1索引的字符附加到’temp’字符串中。
步骤6 - 打印’temp’字符串。
示例
#include <bits/stdc++.h>
using namespace std;
void printTriangle(string alpha) {
// str_len variable to calculate the length of the string.
int str_len = alpha.length();
for (int p = 0; p < str_len; p++) {
string temp = "";
// Append dots to the string
for (int q = 0; q < p; q++)
temp += ".";
// Append character to the string.
for (int q = p; q < str_len; q++)
temp += alpha[q];
// Print the string
cout << temp << "\n";
}
}
int main(){
string alpha = "tutorialspoint";
printTriangle(alpha);
return 0;
}
输出
tutorialspoint
.utorialspoint
..torialspoint
...orialspoint
....rialspoint
.....ialspoint
......alspoint
.......lspoint
........spoint
.........point
..........oint
...........int
............nt
.............t
时间复杂度 – O(N2),使用嵌套循环。
空间复杂度 – O(N),将结果存储在临时字符串中。
方案2
在这种方案中,我们将使用String()构造函数创建一个带有 p 个 ‘.’ 字符的字符串。然后,我们将使用substr()方法来获取字符串中剩余的最后几个字符。
算法
步骤1 - 使用循环开始遍历字符串。
步骤2 - 使用String()构造函数创建一个临时字符串,其中包含总共 p 个 ‘.’ 字符。
步骤3 - 从第 p 个索引开始,长度为 str_len – p,获取子字符串,并追加到临时字符串中。
步骤4 - 打印临时字符串。
示例
#include <bits/stdc++.h>
using namespace std;
void printTriangle(string alpha) {
// str_len variable to calculate the length of the string.
int str_len = alpha.length();
for (int p = 0; p < str_len; p++) {
string temp(p, '.');
// Append substring starting from index p to len
temp += alpha.substr(p, str_len - p);
// Print the string
cout << temp << "\n";
}
}
int main() {
string alpha = "tutorials";
printTriangle(alpha);
return 0;
}
输出
tutorials
.utorials
..torials
...orials
....rials
.....ials
......als
.......ls
........s
时间复杂度 – O(N2) 用于遍历字符串并获取子字符串。
空间复杂度 – O(N) 用于存储临时字符串。
我们学习了如何使用给定字符串打印三角形图案。程序员可以尝试使用while循环来打印三角形图案,就像本教程中使用for循环一样。程序员可以使用带有String()构造函数的for循环。