查找用给定字符替换给定字符串前缀而形成的字符串
在这个问题中,我们将从给定的字符串中形成一个三角形。三角形将包含等于字符串长度 - 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 - 打印临时字符串。
示例
#include <bits/stdc++.h> using namespace std; void printTriangle(string alpha) { // str_len 变量来计算字符串的长度。 int str_len = alpha.length(); for (int p = 0; p < str_len; p++) { string temp = ""; // 将点附加到字符串 for (int q = 0; q < p; q++) temp += "."; // 将字符附加到字符串。 for (int q = p; q < str_len; q++) temp += alpha[q]; // 打印字符串 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 变量来计算字符串的长度。 int str_len = alpha.length(); for (int p = 0; p < str_len; p++) { string temp(p, '.'); // 从索引 p 开始将子字符串附加到 len temp += alpha.substr(p, str_len - p); // 打印字符串 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 循环一样。程序员可以将 for 循环与 String() 构造函数一起使用。