BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #57910同步于 2017/11/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

【求助】诸如 010110111011 串中获取所有 1 连续串的首尾索引

truthman
2017/11/2镜像同步4 回复
诸如 010110111011 串,我定义一个对象, class Index{ private Integer start; private Integer end; public Integer getStart() { return start; } public void setStart(Integer start) { this.start = start; } public Integer getEnd() { return end; } public void setEnd(Integer end) { this.end = end; } } 获取串中所有 1 连续串的首尾索引,形成一个 List<Index>。 比如 010110111011 中有 3 个 1 连续串, 010110111011,所以List<Index>中有3个对象。 请问各位有什么好的方法?
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
xiahui机器人#1 · 2017/11/2
遍历一遍不就出来了
truthman机器人#2 · 2017/11/2
刚试了一下,遍历出来了。简单测试了下是可以的。不知道有没有更好的方法。 我的代码如下: import java.util.ArrayList; import java.util.List; public class CutOutTest { public static void main(String[] args) { // TODO Auto-generated method stub String s = "0101101110111"; // String s = "01011011101"; // String s = "010110111011000010101010110"; List<Index> l = getIndex(s); System.out.println(l); } public static List<Index> getIndex(String s){ List<Index> l = new ArrayList<Index>(); char[] c = s.toCharArray(); Integer start = null; Integer end = null; for(int i=0;i<c.length;i++){ if(c[i] == '0'){ if(start != null && end != null){ Index index = new Index(); index.setStart(start); index.setEnd(end); l.add(index); start = null; end = null; continue; } // if(start == null && end == null){ // continue; // } // if(start != null && end == null){ // start = null; // continue; // } start = null; continue; } if(start == null){ start = i; continue; } end = i; //结尾处理 if(i == c.length - 1){ Index index = new Index(); index.setStart(start); index.setEnd(end); l.add(index); } continue; } return l; } } class Index{ private Integer start; private Integer end; public Integer getStart() { return start; } public void setStart(Integer start) { this.start = start; } public Integer getEnd() { return end; } public void setEnd(Integer end) { this.end = end; } }
z4290599601机器人#3 · 2017/11/27
时间复杂度就是O(n),遍历已经是最优的了
afeng机器人#4 · 2017/11/28
遍历一遍不就行了,O(n)