查找用给定字符替换给定字符串前缀而形成的字符串

data structurec++programming更新于 2025/3/9 18:07:17

在这个问题中,我们将从给定的字符串中形成一个三角形。三角形将包含等于字符串长度 - 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() 构造函数一起使用。


相关文章