以‘X’格式打印奇数长度的字符串
给定奇数长度的字符串,以 X 格式打印该字符串。 例:
Input: 12345
Output:
1 5
2 4
3
2 4
1 5
Input: geeksforgeeks
Output:
g s
e k
e e
k e
s g
f r
o
f r
s g
k e
e e
e k
g s
我们强烈建议你尽量减少浏览器,先自己试试这个。 想法是在单个循环中使用两个变量,第一个变量‘I’从左到右,第二个变量‘j’从右到左。十字(或 X)的上半部分在它们相遇之前被打印出来。中心字符在它们相遇时被打印,下分字符在它们交叉后被打印。在上部,str[i]打印在 str[j]之前,在下部,str[j]打印在 str[i]之前。 以下是以上思路的实现。
C
// C++ program to print Cross pattern
#include<iostream>
using namespace std;
// Function to print given string in cross pattern
// Length of string must be odd
void printPattern(string str)
{
int len = str.length();
// i goes from 0 to len and j goes from len-1 to 0
for (int i=0,j=len-1; i<=len,j>=0; i++,j--)
{
// To print the upper part. This loop runs
// till middle point of string (i and j become
// same
if (i<j)
{
// Print i spaces
for (int x=0; x<i; x++)
cout << " ";
// Print i'th character
cout << str[i];
// Print j-i-1 spaces
for (int x=0; x<j-i-1; x++)
cout << " ";
// Print j'th character
cout << str[j] << endl;
}
// To print center point
if (i==j)
{
// Print i spaces
for (int x=0; x<i; x++)
cout << " ";
// Print middle character
cout << str[i] << endl;
}
// To print lower part
else if (i>j)
{
// Print j spaces
for (int x = j-1; x>=0; x--)
cout << " ";
// Print j'th character
cout << str[j];
// Print i-j-1 spaces
for (int x=0; x<i-j-1; x++)
cout << " ";
// Print i'h character
cout << str[i] << endl;
}
}
}
// Driver program
int main()
{
printPattern("geeksforgeeks");
return 0;
}
Java 语言(一种计算机语言,尤用于创建网站)
// Java program to
// print cross pattern
class GFG
{
// Function to print given
// string in cross pattern
static void pattern(String str,
int len)
{
// i and j are the indexes
// of characters to be
// displayed in the ith
// iteration i = 0 initially
// and go upto length of string
// j = length of string initially
// in each iteration of i,
// we increment i and decrement j,
// we print character only
// of k==i or k==j
for (int i = 0; i < len; i++)
{
int j = len - 1 - i;
for (int k = 0; k < len; k++)
{
if (k == i || k == j)
System.out.print(str.charAt(k));
else
System.out.print(" ");
}
System.out.println("");
}
}
// Driver code
public static void main (String[] args)
{
String str = "geeksforgeeks";
int len = str.length();
pattern(str, len);
}
}
// This code is contributed
// by Smitha
Python 3
# Python 3 program to
# print cross pattern
# Function to print given
# string in cross pattern
def pattern(str, len):
# i and j are the indexes
# of characters to be
# displayed in the ith
# iteration i = 0 initially
# and go upto length of string
# j = length of string initially
# in each iteration of i, we
# increment i and decrement j,
# we print character only of
# k==i or k==j
for i in range(0, len):
j = len -1 - i
for k in range(0, len):
if (k == i or k == j):
print(str[k],
end = "")
else:
print(end = " ")
print(" ")
# Driver code
str = "geeksforgeeks"
len = len(str)
pattern(str, len)
# This code is contributed
# by Smitha
C
// C# program to print
// cross pattern
using System;
class GFG
{
// Function to print given
// string in cross pattern
static void pattern(String str,
int len)
{
// i and j are the indexes
// of characters to be
// displayed in the ith
// iteration i = 0 initially
// and go upto length of string
// j = length of string initially
// in each iteration of i, we
// increment i and decrement j,
// we print character only of
// k==i or k==j
for (int i = 0; i < len; i++)
{
int j = len - 1 - i;
for (int k = 0; k < len; k++)
{
if (k == i || k == j)
Console.Write(str[k]);
else
Console.Write(" ");
}
Console.Write("\n");
}
}
// Driver code
public static void Main ()
{
String str = "geeksforgeeks";
int len = str.Length;
pattern(str, len);
}
}
// This code is contributed by Smitha
服务器端编程语言(Professional Hypertext Preprocessor 的缩写)
<?php
// PHP program to print
// Cross pattern
// Function to print given
// string in cross pattern,
// Length of string must be odd
function printPattern($str)
{
$len = strlen($str);
// i goes from 0 to len and
// j goes from len-1 to 0
for ($i = 0, $j = $len - 1;
$i <= $len, $j >= 0;
$i++, $j--)
{
// To print the upper part.
// This loop runs till middle point
// of string i and j become same
if ($i < $j)
{
// Print i spaces
for ($x = 0; $x < $i; $x++)
echo " ";
// Print i'th character
echo $str[$i];
// Print j-i-1 spaces
for ( $x = 0; $x < $j - $i - 1;
$x++)
echo " ";
// Print j'th character
echo $str[$j]."\n";
}
// To print center point
if ($i == $j)
{
// Print i spaces
for ($x = 0; $x < $i; $x++)
echo " ";
// Print middle character
echo $str[$i]."\n";
}
// To print lower part
else if ($i > $j)
{
// Print j spaces
for ($x = $j - 1; $x >= 0;
$x--)
echo " ";
// Print j'th character
echo $str[$j];
// Print i-j-1 spaces
for ( $x = 0; $x < $i - $j - 1;
$x++)
echo " ";
// Print i'h character
echo $str[$i]."\n";
}
}
}
// Driver code
printPattern("geeksforgeeks");
// This code is contributed by mits
?>
java 描述语言
<script>
// javascript program to
// print cross pattern // Function to print given
// string in cross pattern
function pattern(str,len)
{
// i and j are the indexes
// of characters to be
// displayed in the ith
// iteration i = 0 initially
// and go upto length of string
// j = length of string initially
// in each iteration of i,
// we increment i and decrement j,
// we print character only
// of k==i or k==j
for (i = 0; i < len; i++)
{
var j = len - 1 - i;
for (k = 0; k < len; k++)
{
if (k == i || k == j)
document.write(str.charAt(k));
else
document.write(" ");
}
document.write("<br>");
}
}
// Driver code
str = "geeksforgeeks";
var len = str.length;
pattern(str, len);
// This code is contributed by Amit Katiyar
</script>
输出:
g s
e k
e e
k e
s g
f r
o
f r
s g
k e
e e
e k
g s
备选方案:
C++
// CPP program to print cross pattern
#include<bits/stdc++.h>
using namespace std;
// Function to print given string in
// cross pattern
void pattern(string str, int len){
// i and j are the indexes of characters
// to be displayed in the ith iteration
// i = 0 initially and go upto length of
// string
// j = length of string initially
// in each iteration of i, we increment
// i and decrement j, we print character
// only of k==i or k==j
for (int i = 0; i < len; i++)
{
int j = len -1 - i;
for (int k = 0; k < len; k++)
{
if (k == i || k == j)
cout << str[k];
else
cout << " ";
}
cout << endl;
}
}
// driver code
int main ()
{
string str = "geeksforgeeks";
int len = str.size();
pattern(str, len);
return 0;
}
// This code is contributed by Satinder Kaur
Java 语言(一种计算机语言,尤用于创建网站)
// Java program to print cross pattern
class GFG
{
// Function to print given
// string in cross pattern
static void pattern(String str, int len)
{
// i and j are the indexes of
// characters to be displayed
// in the ith iteration i = 0
// initially and go upto length
// of string j = length of string
// initially in each iteration
// of i, we increment i and decrement
// j, we print character only
// of k==i or k==j
for (int i = 0; i < len; i++)
{
int j = len -1 - i;
for (int k = 0; k < len; k++)
{
if (k == i || k == j)
System.out.print(str.charAt(k));
else
System.out.print(" ");
}
System.out.println("");
}
}
// driver code
public static void main(String[] args)
{
String str = "geeksforgeeks";
int len = str.length();
pattern(str, len);
}
}
// This code is contributed by 29AjayKumar
Python 3
# Python 3 program to print cross pattern
# Function to print given string in
# cross pattern
def pattern(st, length):
# i and j are the indexes of characters
# to be displayed in the ith iteration
# i = 0 initially and go upto length of
# string
# j = length of string initially
# in each iteration of i, we increment
# i and decrement j, we print character
# only of k==i or k==j
for i in range(length):
j = length -1 - i
for k in range(length):
if (k == i or k == j):
print(st[k],end="")
else:
print(" ",end="")
print()
# driver code
if __name__ == "__main__":
st = "geeksforgeeks"
length = len(st)
pattern(st, length)
C
// C# program to print cross pattern
using System;
class GFG
{
// Function to print given
// string in cross pattern
static void pattern(String str, int len)
{
// i and j are the indexes of
// characters to be displayed
// in the ith iteration i = 0
// initially and go upto length
// of string j = length of string
// initially in each iteration
// of i, we increment i and decrement
// j, we print character only
// of k==i or k==j
for (int i = 0; i < len; i++)
{
int j = len -1 - i;
for (int k = 0; k < len; k++)
{
if (k == i || k == j)
Console.Write(str[k]);
else
Console.Write(" ");
}
Console.WriteLine("");
}
}
// Driver code
public static void Main(String[] args)
{
String str = "geeksforgeeks";
int len = str.Length;
pattern(str, len);
}
}
// This code is contributed by Rajput-Ji
服务器端编程语言(Professional Hypertext Preprocessor 的缩写)
<?php
// PHP program to print
// cross pattern
// Function to print given
// string in cross pattern
function pattern($str, $len)
{
// i and j are the indexes of
// characters to be displayed
// in the ith iteration i = 0
// initially and go upto length of
// string
// j = length of string initially
// in each iteration of i, we
// increment i and decrement j, we
// print character only of k==i or k==j
for ($i = 0; $i < $len; $i++)
{
$j = $len -1 - $i;
for ($k = 0; $k < $len; $k++)
{
if ($k == $i || $k == $j)
echo $str[$k];
else
echo " ";
}
echo "\n";
}
}
// Driver code
$str = "geeksforgeeks";
$len = strlen($str);
pattern($str, $len);
// This code is contributed by mits
?>
java 描述语言
<script>
// Javascript program to print cross pattern
// Function to print given
// string in cross pattern
function pattern(str , len)
{
// i and j are the indexes of
// characters to be displayed
// in the ith iteration i = 0
// initially and go upto length
// of string j = length of string
// initially in each iteration
// of i, we increment i and decrement
// j, we print character only
// of k==i or k==j
for (var i = 0; i < len; i++)
{
var j = len -1 - i;
for (var k = 0; k < len; k++)
{
if (k == i || k == j)
document.write(str.charAt(k));
else
document.write(" ");
}
document.write('<br>');
}
}
// driver code
var str = "geeksforgeeks";
var len = str.length;
pattern(str, len);
// This code is contributed by 29AjayKumar
</script>
输出:
g s
e k
e e
k e
s g
f r
o
f r
s g
k e
e e
e k
g s
解决方案 3 :这个问题也可以通过观察字符是沿着左右对角线打印的,只要我们把图案封装在一个矩阵内就可以解决。现在,如果字符串的长度是 len ,那么该模式可以包含在有序的方形矩阵 len 中。
- 左对角线上的元素可以通过条件 ( i==j ) 来访问,其中 I 和 j 分别是行号和列号。
- 右对角线上的元素可以通过条件 (i+j == len-1) 访问。
因此,运行顺序为 len 的嵌套循环,用各自的字符填充满足上述两个条件的位置,并用空格填充其余位置。 以下是上述办法的实施情况:
卡片打印处理机(Card Print Processor 的缩写)
// C++ program to print the given pattern
#include<bits/stdc++.h>
using namespace std;
// Function to print the given
// string in respective pattern
void printPattern(string str, int len)
{
for(int i = 0; i < len; i++)
{
for(int j = 0; j < len; j++)
{
// Print characters at corresponding
// places satisfying the two conditions
if((i == j) || (i + j == len-1))
cout<<str[j];
// Print blank space at rest of places
else
cout<<" ";
}
cout<<endl;
}
}
// Driver Code
int main()
{
string str = "geeksforgeeks";
int len = str.size();
printPattern(str, len);
return 0;
}
// This code and Approach is contributed by
// Aravind Kimonn
Java 语言(一种计算机语言,尤用于创建网站)
// Java program to print the given pattern
import java.io.*;
class GFG
{
// Function to print the given
// string in respective pattern
static void printPattern(String str, int len)
{
for(int i = 0; i < len; i++)
{
for(int j = 0; j < len; j++)
{
// Print characters at corresponding
// places satisfying the two conditions
if((i == j) || (i + j == len - 1))
System.out.print(str.charAt(j));
// Print blank space at rest of places
else
System.out.print(" ");
}
System.out.println();
}
}
// Driver code
public static void main (String[] args)
{
String str = "geeksforgeeks";
int len = str.length();
printPattern(str, len);
}
}
// This code is contributed by rag2127.
Python 3
# Python3 program to print the given pattern
# Function to print the given
# string in respective pattern
def printPattern (Str, Len) :
for i in range(Len) :
for j in range(Len) :
# Print characters at corresponding
# places satisfying the two conditions
if ((i == j) or (i + j == Len - 1)) :
print(Str[j], end = "")
# Print blank space at rest of places
else :
print(" ", end = "")
print()
Str = "geeksforgeeks"
Len = len(Str)
printPattern(Str, Len)
# This code is contributed by divyeshrabadiya07.
C
// C# program to print the given pattern
using System;
public class GFG
{
// Function to print the given
// string in respective pattern
static void printPattern(string str, int len)
{
for(int i = 0; i < len; i++)
{
for(int j = 0; j < len; j++)
{
// Print characters at corresponding
// places satisfying the two conditions
if((i == j) || (i + j == len - 1))
Console.Write(str[j]);
// Print blank space at rest of places
else
Console.Write(" ");
}
Console.WriteLine();
}
}
// Driver code
static public void Main ()
{
String str = "geeksforgeeks";
int len = str.Length;
printPattern(str, len);
}
}
// This code is contributed by avanitrachhadiya2155
java 描述语言
<script>
// javascript program to print the given pattern
// Function to print the given
// string in respective pattern
function printPattern(str , len)
{
for(var i = 0; i < len; i++)
{
for(var j = 0; j < len; j++)
{
// Print characters at corresponding
// places satisfying the two conditions
if((i == j) || (i + j == len - 1))
document.write(str.charAt(j));
// Print blank space at rest of places
else
document.write(" ");
}
document.write('<br>');
}
}
// Driver code
var str = "geeksforgeeks";
var len = str.length;
printPattern(str, len);
// This code is contributed by 29AjayKumar
</script>
输出:
g s
e k
e e
k e
s g
f r
o
f r
s g
k e
e e
e k
g s
https://youtu . be/7 gyjmrezos
本文由 Dinesh T.P.D 供稿。如果你发现任何不正确的地方,请写评论,或者你想分享更多关于上面讨论的话题的信息
版权属于:月萌API www.moonapi.com,转载请注明出处