c# - 有人可以说我在 C# 任务中做错了什么吗?
问题描述
我需要在字符串数组中创建对称字母“W”
get_w() 是应该返回包含字母“W”的字符串数组的方法
get_w(5) # 应该返回:
public string[] GetW(int h)
{
if (h < 2) return new string[h];
int row = 0;
int stars_number = h * 4 - 3;
int times = 0;
StringBuilder[] c = new StringBuilder[h];
for(int a = 0; a < h; a++)
{
c[a] = new StringBuilder();
c[a].Length = stars_number;
}
for (int i = 0; i < stars_number; i++)
{
if (i == h - 1) times = 1;
if (i == stars_number-2 * h + 1) times = 2;
if (i == stars_number - h) times = 3;
c[row][i] = '*';
if (row < h - 1 && (times == 0 || times == 2))
{
row += 1;
}
else
{
row -= 1;
}
}
string []str = new string[h];
for(int i = 0; i < h; i ++)
{
str[i] = c[i].ToString();
}
return str;
}
如果我在 VS 中编译它,我不会收到任何错误。这是一个结果示例
此任务取自 Codewars,但如果我尝试使用上面描述的代码在 Codewars 上进行测试,我会收到此错误
编辑:我将返回数组的“h”长度更改为空数组并得到了这个
解决方案
我通过用字符 ' ' 替换等于 '\0' 的章程找到了任务解决方案,这是工作代码
public string[] GetW(int h)
{
if (h < 2) return new string[]{};
int row = 0;
int stars_number = h * 4 - 3;
int times = 0;
StringBuilder[] c = new StringBuilder[h];
for(int a = 0; a < h; a++)
{
c[a] = new StringBuilder();
c[a].Length = stars_number;
}
for (int i = 0; i < stars_number; i++)
{
if (i == h - 1) times = 1;
if (i == stars_number-2 * h + 1) times = 2;
if (i == stars_number - h) times = 3;
c[row][i] = '*';
if (row < h - 1 && (times == 0 || times == 2))
{
row += 1;
}
else
{
row -= 1;
}
}
string []str = new string[h];
for(int i = 0; i < h; i ++)
{
c[i].Replace('\0', ' ');
str[i] = c[i].ToString();
}
return str;
}
这是测试结果
推荐阅读
- tensorflow - 简单的自定义 Keras 度量函数的问题无法返回 Argmax?
- oracle - 如何从在 oracle 中有 100 个包的包中查找哪些过程正在执行插入/更新操作
- django - Django [Errno 13] 权限被拒绝:'/var/www/media/'
- vmware - 将 openVZ 容器转换为 VMware
- javascript - 表单外的提交/按钮缺少参数
- apache-kafka - 在 Windows 上运行 Kafka 服务器时出错
- c# - 尝试将 .tif 文件转换为 jpg 时出错:GDI+ 中发生一般错误
- sql - SQL - 从多个表中获取关联数据
- vba - 如何删除输出文件中标题名称中的空格
- android - 如何从字符串“October”和整数值“2018”获取完整日期格式为完整日期格式?