前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Leetcode 题解——541/1018

Leetcode 题解——541/1018

作者头像
出其东门
发布2019-08-14 20:29:21
4550
发布2019-08-14 20:29:21
举报
文章被收录于专栏:01二进制01二进制

541. 反转字符串 II

题目

https://leetcode-cn.com/problems/reverse-string-ii/

题解

该题分为两步:

将字符串按照2k的长度分割成一个数组

遍历该数组元素进行反转匹配即可

注意处理下边界值

下面是按照规定长度拆分字符串的代码,可以封装成一个工具类

代码
代码语言:javascript
复制
/** * 把原始字符串分割成指定长度的字符串列表 * * @param inputString 原始字符串 * @param length      指定长度 * @return */public List<String> getStrList(String inputString, int length) {    int size = inputString.length() / length;    if (inputString.length() % length != 0) {        size += 1;    }    return getStrList(inputString, length, size);}
/** * 把原始字符串分割成指定长度的字符串列表 * * @param inputString 原始字符串 * @param length      指定长度 * @param size        指定列表大小 * @return */public List<String> getStrList(String inputString, int length,                               int size) {    List<String> list = new ArrayList<String>();    for (int index = 0; index < size; index++) {        String childStr = substring(inputString, index * length,                (index + 1) * length);        list.add(childStr);    }    return list;}
/** * 分割字符串,如果开始位置大于字符串长度,返回空 * * @param str 原始字符串 * @param f   开始位置 * @param t   结束位置 * @return */public String substring(String str, int f, int t) {    if (f > str.length())        return null;    if (t > str.length()) {        return str.substring(f, str.length());    } else {        return str.substring(f, t);    }xw}

1018. 可被 5 整除的二进制前缀

题目

https://leetcode-cn.com/problems/binary-prefix-divisible-by-5/

题解
代码语言:javascript
复制
//思路://[1,1,1,0,1]//第一步:[1] = 0*2+1 = 1;            //被5取模=1//第二步:[1,1] = 1*2+1 = 3;            //被5取模=3//第三步:[1,1,1] = 3*2+1 = 7;                //被5取模=2//第四步:[1,1,1,0] = 7*2+0 = 14;        //被5取模=4//第五步:[1,1,1,0,1] = 14*2+1 = 29;            //被5取模=4//如果每步计算2的幂,结果会越来越大,java没有基本类型可以承受如此大的结果//考虑采用每次结果的模进行计算//第一步:[1] = (0*2+1)%5 = 1;            //被5取模=1//第二步:[1,1] = (1*2+1)%5 = 3;            //被5取模=3//第三步:[1,1,1] = (3*2+1)%5 = 2;        //被5取模=2//第四步:[1,1,1,0] = (2*2+0)%5 = 4;        //被5取模=4//第五步:[1,1,1,0,1] = (4*2+1)%5 = 4;            //被5取模=4
代码
代码语言:javascript
复制
import java.util.ArrayList;import java.util.List;
public class Main {
    public static void main(String[] args) {        Main main = new Main();        int[] a = {0, 1, 1, 1, 1, 1};        List<Boolean> list = main.prefixesDivBy5(a);        for (Boolean b : list) {            System.out.println(b);        }    }
    public List<Boolean> prefixesDivBy5(int[] A) {        List<Boolean> list = new ArrayList<>();        int mod = 0;        for (int i : A) {            mod = (mod * 2 + i) % 5;            if (mod == 0)                list.add(true);            else list.add(false);        }        return list;    }}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 01二进制 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 541. 反转字符串 II
    • 题目
      • 题解
        • 代码
        • 1018. 可被 5 整除的二进制前缀
          • 题目
            • 题解
              • 代码
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档