请使用任意语言在屏幕上打印出一个n行n列的菱形。(输入参数为n,使用递增和递减数字填充输出)请注意需要对异常情况进行处理。
例如N=5时输出屏幕为
**1**
*121*
12321
*121*
**1**
1
"1"
5
"**1**|*121*|12321|*121*|**1**"
4
""
注意:换行符请用"|"替代!!!
class Solution: def print_diamond(self , n ): if not n % 2: # 处理特殊情况 return "" res = "" for i in range(n//2, -1, -1): left = "*" * ((n-2*i-1)//2) + "".join(list(map(str, [j for j in range(1, i+1)]))) # 每一行的输出 = 左字符串 + 中间的一个数字 + 翻转后的左字符串 temp = left + str(i+1) + left[::-1] if i == n//2: res = res + temp else: res = temp + "|" + res + "|" + temp # 利用对称,简化运算 return res
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # 输出菱形 # @param n int整型 行数&列数 # @return string字符串 # class Solution: def solve(self, peak, n): s = ["*" for i in range(n)] m = n // 2 for i in range(peak): s[m + i] = str(peak - i) s[m - i] = str(peak - i) return "".join(s) def print_diamond(self, n): if n % 2 == 0: return "" answer = "" for i in range(1, n): answer += self.solve(min(i, n + 1 - i), n) answer += "|" answer += self.solve(1, n) return answer
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 输出菱形
* @param n int整型 行数&列数
* @return string字符串
*/
public String print_diamond (int n) {
// write code here
if((n&1)==0){
return "";
}
Stack<String> stack = new Stack<>();
StringBuilder res = new StringBuilder();
// **1**
// *121*
// 12321
int mid = n/2+1;
// 对mid行进行操作
for(int k=1;k<=mid;k++){
StringBuilder builder = new StringBuilder();
// 数字数目
int nums = 2*(k-1)+1;
// 星星数目
int stars = n-nums;
for(int i=0;i<stars;i++){
if(i==stars/2){
for(int j=1;j<=k;j++){
builder.append(j);
}
for(int j=k-1;j>0;j--){
builder.append(j);
}
}
builder.append("*");
}
if(stars>0){
stack.push("|"+builder.toString());
}
if(stars==0){
for(int j=1;j<=mid;j++){
builder.append(j);
}
for(int j=mid-1;j>0;j--){
builder.append(j);
}
res.append(builder);
}else{
res.append(builder+"|");
}
}
while(!stack.isEmpty()){
res.append(stack.pop());
}
return res.toString();
}
}