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();
}
}
输出:
时间复杂度:这个程序的时间复杂度是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);
}
}
输出:
时间复杂度:O (R2 * N)
辅助空间:O (1)