大壹哥 2014-03-20 19:23
浏览 189
已采纳

一个关于循环字符串的问题

现在我有一个字符串“0001111111100111100011100011”,其中0代表非交易日,1代表交易日,这个字符串长度为31,第一个数学0代表是2014-1-1不是交易日。我需要返回所有的交易日期区间。比如我这里的第一个日期区间为2014-1-4到2014-1-11。求高手解决方案啊。。最好效率高一点啊。

  • 写回答

3条回答 默认 最新

  • joaboo 2014-03-21 00:29
    关注

    [code="java"]
    public static void main(String[] args) {

    String date = "2014-01-01";
    String input = "0001111111100111100011100011001";
    int n = 0;
    for (int i = 0; i < input.length(); i++) {
        if (input.charAt(i) == '1') {
            n++;
        } else {
            if (n > 0) {
                System.out.println("from: " + addDay(date, i - n) + "  to: " + addDay(date, i - 1));
            }
            n = 0;
            continue;
        }
    
        if (i == input.length() - 1) {
            if (n > 0) {
                System.out.println("from: " + addDay(date, i - n + 1) + "  to: " + addDay(date, i));
            }
        }
    }
    

    }

    private static String addDay(String input, int d) {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Calendar c = Calendar.getInstance();
    try {
    c.setTime(sdf.parse(input));
    c.add(Calendar.DAY_OF_MONTH, d);
    return sdf.format(c.getTime());
    } catch (Exception e) {
    // ignore
    }
    return null;
    }
    [/code]
    以一月为例,随意写了写,没封装成方法,反正就这么个思路,你看着改吧. :lol:

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 虚拟机打包apk出现错误
  • ¥30 最小化遗憾贪心算法上界
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝