我在初级开发工作中遇到了一个代码挑战,但我失败了(相当严重(,我一直在思考这个问题。
问题是:假定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());
}