美文网首页
每日一练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