返回信息流诸如 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个对象。
请问各位有什么好的方法?
这是一条镜像帖。来源:北邮人论坛 / java / #57910同步于 2017/11/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
【求助】诸如 010110111011 串中获取所有 1 连续串的首尾索引
truthman
2017/11/2镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
刚试了一下,遍历出来了。简单测试了下是可以的。不知道有没有更好的方法。
我的代码如下:
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;
}
}