如何在Java、C#或Python中做到这一点



我在初级开发工作中遇到了一个代码挑战,但我失败了(相当严重(,我一直在思考这个问题。

问题是:假定N的长度为1-100。任务是将N作为字符串返回。

例如,如果N=5,则返回"+-+-+"或者如果N为3,则重新运行"+-+">

在算法开始时,N被分配给类型Int。

我试着使用Java,但测试失败了,我看不出展示我的代码会有什么帮助。我所追求的是一个解决方案,所以我可以看到它是如何做到的,并从中学习

我可能会使用以下语言:Java、Python、C#。

using System;
using System.Text;
public class Program
{
private static string StringN(int N)
{
var builder = new StringBuilder();
for(int i = 0; i < N; ++i)
{
builder.Append(i%2 == 0 ? "+" : "-");
}
return builder.ToString();
}
public static void Main()
{
for(int i = 0; i < 10; ++i)
{
Console.WriteLine(StringN(i));
}
}
}

这是一把小提琴。上述代码中使用了C#。

Java 11+

public static String getStringFromN(int n) {
return String.format("%s%s", "+-".repeat(n / 2), n % 2 == 1 ? "+" : "");
}

将字符串+-乘以n。返回该字符串中的第一个n字符。

在Python中

>>> def f(n):
...     template = '+-'
...     string = template * n
...     return string[:n]
... 
>>> f(5)
'+-+-+'
>>> f(3)
'+-+'
>>> 

或者,在一行f = lambda n: ('+-' * n)[:n]中。

In C Sharp

using System;
using System.Text;
public class Program
{
private static string f(int n)
{
var builder = new StringBuilder();
for(int i = 0; i < n; i++)
builder.Append("+-");
return builder.ToString().Substring(n);
}
public static void Main()
{
Console.WriteLine(f(3));
Console.WriteLine(f(5));
}
}

还有一把小提琴。

n = int(input("Enter N:"))
for i in range(0,n):
if i % 2 == 0:
print("+", end =""),
else:
print("-",  end =""),

以下是python 中的一个解决方案

Java中的(非压缩(版本:

public static void main(String[] args) {
Random rand = new Random();
int N = rand.nextInt(100) + 1;
StringBuilder builder = new StringBuilder();
for(int i = 0; i < N; i++) {
if(i % 2 == 0)
builder.append("+");
else
builder.append("-");
}
System.out.println("Value: " + N);
System.out.println(builder.toString());
}

相关内容

最新更新