C++ 通过用给定的字符替换给定字符串的前缀来找到形成的字符串

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循环。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程