美文网首页
每日一练44——Java Stringy Strings(8ky

每日一练44——Java Stringy Strings(8ky

作者: 砾桫_Yvan | 来源:发表于2018-07-09 09:55 被阅读0次

题目

写一个函数stringy,传入一个size并返回一个string(交替的'1'和'0')。

字符串应该以1开头。

带有size6 的字符串应返回:'101010'。

size 4 应返回:'1010'。

size12 应返回:'101010101010'。

注:size总是正整数。

测试用例:

import org.junit.Test;
import static org.junit.Assert.assertEquals;
import java.util.Random;

public class StringyExampleTests {
  @Test
  public void startTest() {
    assertEquals("Your string should start with a 1", '1', Kata.stringy(3).charAt(0));
  }
  
  @Test
  public void lengthTests() {
    Random randGen = new Random();
    for (int i = 0; i < 10; i++) {
      int size = randGen.nextInt(50);
      assertEquals("Wrong length using size " + size, size, Kata.stringy(size).length());
    }

    @Test
  public void Tests() {
    assertEquals("101010101010",Kata.stringy(12));
    assertEquals("1",Kata.stringy(1));
  }
  }
}

解题

我的:

public class Kata {
    public static String stringy(int size) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < size; i++) {
            if (i % 2 == 0) {
                sb.append("1");
            } else {
                sb.append("0");
            }
        }
        return String.valueOf(sb);
    }
}

别人的:

有人和我一样,也有挺聪明的。

public class Kata {
  public static String stringy(int size) {
    StringBuilder sb = new StringBuilder();
    for (int i = 1; i < size + 1; i++)
      sb.append(i & 1);
    return sb.toString();
  }
}
import java.util.stream.IntStream;
import java.util.stream.Collectors;

public class Kata {
  public static String stringy(int size) {
    return IntStream.rangeClosed(1, size)
                    .map(i -> i % 2)
                    .mapToObj(String::valueOf)
                    .collect(Collectors.joining(""));
  }
}

后记

多思考,总有优化的空间(行数)。

相关文章

网友评论

      本文标题:每日一练44——Java Stringy Strings(8ky

      本文链接:https://www.haomeiwen.com/subject/pohzuftx.html