Java实例 垂直打印字符串

Java实例 垂直打印字符串,描述:你有一个字符串,你需要垂直地打印它的字符,从字符串的左到右。

字符数组可以被称为字符串。在这种情况下,程序被构建为垂直打印字母,从字符串的左边开始,向右移动。字符串的字符每行打印一个。例如,字符串“ABC”有三个字母(或字符)”A ” “B “和” c “这封信现在将被打印成三条不同的竖线:

A
B
C

小写字符将被更改为大写字符,然后应该打印大写字符。要以这种方式打印字符,每个字符首先使用其各自的索引位置(索引从0开始)。如果文本是小写,则以大写打印,在每个字符打印后,光标应移动到下一行,以便下一个字符可以再次打印。通过重复此技术,将到达字符串的最后一个字符。

算法

Step 1: [获得输入]读取str ['str'是字符串]
Step 2: [垂直打印字符串的字符] 
For i=0 to length(str)-1 repeat 
[if the character is in lower case]
 If str[i]≥'a' and str[i]≤'z' then 
Set str[i]<-str[i]-32
 [End of 'if loop'] 
Print str[i]
Proceed to the next line 
[End of 'for' loop] 
Step 3: Stop.

示例

import java.util.Scanner;
//Defining a class
class Str_vertical{
    //Members of data
    String str;
    //Methods of member
    //Function to grab inputs
    void accept(){
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the string: ");
        str =sc.nextLine();
    }
    //Function to print the characters vertically
    void print(){
        int i;
        str = str.toUpperCase();
        //loop to access each character of the string
        for(i=0; i<str.length(); i++){
            System.out.println("\t"+str.charAt(i));
        }
    }
    //main function
    public static void main(String[] args)
    {
        //creating an object
        Str_vertical string = new Str_vertical();
        //calling the functions
        string.accept();
        string.print();
    }
}

输出:

Java实例 垂直打印字符串

时间复杂度:这个程序的时间复杂度是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。

以下是上述方法的实现:

// Java program for the above approach
public class fashion{
//Function to print any string
// in zigzag fashion
static void zigzag(String str, int rows)
{
    // Store the gap between the major columns
    int interval = 2 * rows - 2;
    // Traverse through rows
    for(int i = 0; i < rows; i++)
    {
        // Store the step value for each row
        int step = interval - 2 * i;
        // Iterate in the range [1, N-1]
        for(int j = i; j < str.length(); j = j + interval)
        {   
            // Print the character
            System.out.print(str.charAt(j));
            if (step > 0 && step < interval &&
                step + j < str.length())
            {
                // Print the spaces before the character
                // str[j+step]
                for(int k = 0; k < (interval - rows - i); k++)
                    System.out.print(" ");
                // Print the character
                System.out.print(str.charAt(j + step));
                // Print the spaces after the character
                // after str[j+step]
                for(int k = 0; k < i - 1; k++)
                    System.out.print(" ");
            }
            else
            {
                // Print the spaces for the first and last rows
                for(int k = 0; k < (interval - rows); k++)
                    System.out.print(" ");
            }
        }
        System.out.println();
    }
}
public static void main(String args[])
{   
    // Input given
    String str = "123456789ABCDEFGHIJKLM" +
            "NOPQRSTUVWXYZabcdefghi" +
            "jklmnopqrstuvwxyz";
    int rows = 9;
    // Calling the function
    zigzag(str, rows);
}
}

输出:

Java实例 垂直打印字符串

时间复杂度:O (R2 * N)

辅助空间:O (1)

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Java 示例