现在我有一个字符串“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:本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 孟德尔随机化怎样画共定位分析图
- ¥18 模拟电路问题解答有偿
- ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
- ¥15 误删注册表文件致win10无法开启
- ¥15 请问在阿里云服务器中怎么利用数据库制作网站
- ¥60 ESP32怎么烧录自启动程序
- ¥50 html2canvas超出滚动条不显示
- ¥15 java业务性能问题求解(sql,业务设计相关)
- ¥15 52810 尾椎c三个a 写蓝牙地址
- ¥15 elmos524.33 eeprom的读写问题