Java实例 垂直打印字符串,描述:你有一个字符串,你需要垂直地打印它的字符,从字符串的左到右。
字符数组可以被称为字符串。在这种情况下,程序被构建为垂直打印字母,从字符串的左边开始,向右移动。字符串的字符每行打印一个。例如,字符串“ABC”有三个字母(或字符)”A ” “B “和” c “这封信现在将被打印成三条不同的竖线:
小写字符将被更改为大写字符,然后应该打印大写字符。要以这种方式打印字符,每个字符首先使用其各自的索引位置(索引从0开始)。如果文本是小写,则以大写打印,在每个字符打印后,光标应移动到下一行,以便下一个字符可以再次打印。通过重复此技术,将到达字符串的最后一个字符。
算法
示例
输出:
时间复杂度:这个程序的时间复杂度是O(n),其中n是字符串中的字符数。
空间复杂度:这个程序的空间复杂度是O(n),其中n是字符串的字符数。
以垂直”之”字形方式打印字符串
当给定字符串S(大小为N)和行数为R(如示例所示)时,工作是根据给定的行数以垂直之字形打印提供的字符串。
方法:目标是确定主columns之间的距离和中间columns的步长值,以便打印空格,直到达到字符串的最后一个字符。要解决这个问题,请遵循以下方法:
- 确定一个变量intervalas 2*R-2来存储主columns之间的间隙。
- 使用变量i在[0,R-1]范围内迭代 将变量stepas interval-2*i初始化为每一行的步长值。 使用变量j在[i, N-1]范围内迭代,每次迭代j递增一个区间, 打印字符,S[j]。 如果step sprawl的值在[1,interval-1]和step+j<N的范围内,则打印(interval-R-i)的空格数,然后打印s[j+step],最后打印(i-1) 否则打印(interval-R)空格的数量。 在外层循环的每次迭代之后打印New Line。
以下是上述方法的实现:
输出:
时间复杂度:O (R2 * N)
辅助空间:O (1)