解决方案 »

  1.   


            List<Integer> list = new ArrayList<Integer>();
            String[] lines = {"TOKEN", "1", "2",
                "TOKEN", "1", "3", "4",
                "TOKEN", "1", "2", "3"};
            int total = 0;
            for (int i = 0; i < lines.length; i++) {
                if (lines[i].equals("TOKEN")) {
                    if (i != 0) {
                        list.add(total);
                        total = 0;
                    }
                } else {
                    total += Integer.parseInt(lines[i]);
                }
            }
            list.add(total);
            System.out.println(list);
      

  2.   

    最老土的写法
    String[] lines = {"TOKEN", "1", "2", 
            "TOKEN", "1", "3", "4", 
            "TOKEN", "1", "2", "3"};
    int count=0;
    ArrayList countList = new ArrayList();
    for(int j=0;j<lines.length;j++){
    if("TOKEN".equals(lines[j])){
    if(count >0){
    countList.add(count);
    count=0;
    }
    }else{
    count = count+Integer.valueOf(lines[j]);
    }
    }
    if(count >0){
    countList.add(count);
    count=0;
    }

    for(int j=0;j<countList.size();j++){
    System.out.println("result:"+countList.get(j));
    }
      

  3.   

    [code =java]
    List<Integer> list = new  ArrayList<Integer>();
    public void toarr(){
    for(int i=0;i<lines.length;i++){
    if(lines[i].equals("TOKEN")){
    list.add(i);
    }
    }

    for(int i= 0; i <list.size()-1;i++){
    list.set(i, deal(list.get(i),list.get(i+1)));
    }

    for(Integer i:list)
    System.out.println(i);
    }

    public int deal(int a,int b){
    int sum=0;
    if(a==b)
    return sum;
    for(int i=a+1;i<b;i++)
    sum += Integer.parseInt(lines[i]);
    return sum;
    }
    [/code]
    技术略挫,不要笑我
      

  4.   


    List<Integer> list = new  ArrayList<Integer>();
    public void toarr(){
    for(int i=0;i<lines.length;i++){
    if(lines[i].equals("TOKEN")){
    list.add(i);
    }
    }

    for(int i= 0; i <list.size()-1;i++){
    list.set(i, deal(list.get(i),list.get(i+1)));
    }

    for(Integer i:list)
    System.out.println(i);
    }

    public int deal(int a,int b){
    int sum=0;
    if(a==b)
    return sum;
    for(int i=a+1;i<b;i++)
    sum += Integer.parseInt(lines[i]);
    return sum;
    }
      

  5.   

    @org.junit.Test
    public void testA(){
    String[] lines = {"TOKEN", "1", "2", 
            "TOKEN", "1", "3", "4", 
            "TOKEN", "1", "2", "3"};
    List<Integer> a = new ArrayList<Integer>();
    for(int i=0;i<lines.length;i++){
    if(lines[i].equals("TOKEN")){
    a.add(i);
    }
    }
    a.add(lines.length);
    System.out.println(a);
    List b = new ArrayList();
    for(int i= 0; i <a.size()-1;i++){
    b.add(deal(a.get(i),a.get(i+1),lines));
        }
    System.out.println(b);
    }

    public int deal(int a,int b,String[] lines){
    System.out.println(a+" "+b);
        int sum=0;
        if(a==b)
            return sum;
        for(int i=a+1;i<b;i++)
            sum += Integer.parseInt(lines[i]);
        return sum;
    }
      

  6.   

    public static void main(String args[])
    {
    ArrayList <Integer> arraylist = new ArrayList <Integer>();

    String[] lines = {"1", "2", "1", "3", "4", "1", "2", "3"};
    // String[] lines = {"TOKEN", "1", "2", "TOKEN", "1", "3", "4", "TOKEN", "1", "2", "3"};

    for(int i = 0; i < lines.length; i++)
    {
    if("TOKEN".equals(lines[i]))
    {
    int total = 0;
    for(int j = i+1; j < lines.length; j++)
    {
    if(!"TOKEN".equals(lines[j]))
    {
    total += Integer.parseInt(lines[j]);
    }
    else
    {
    break;
    }
    }
    arraylist.add(total);
    }
    }

    Iterator <Integer> it = arraylist.iterator();

    while(it.hasNext())
    {
    Integer i = it.next();

    System.out.println(i);
    }

    }
    我这个好像时间复杂度高,仅供参考
      

  7.   

    ArrayList <Integer> arraylist = new ArrayList <Integer>();
    // String[] lines = {"1", "2", "1", "3", "4", "1", "2", "3"};
    String[] lines = {"TOKEN", "1", "2", "TOKEN", "1", "3", "4", "TOKEN", "1", "2", "3"};
    for(int i = 0; i < lines.length; i++)
    {
    if("TOKEN".equals(lines[i]))
    {
    int total = 0;
    for(int j = i+1; j < lines.length; j++)
    {
    if(!"TOKEN".equals(lines[j]))
    {
    total += Integer.parseInt(lines[j]);
    }
    else
    {
    break;
    }
    }
    arraylist.add(total);
    }
    }
      

  8.   

    package csdn_20140218;import java.util.ArrayList;public class ArrayListDemo1 {
    public static void main(String[] args) {

    String[] lines = {"TOKEN", "1", "2", 
            "TOKEN", "1", "3", "4", 
            "TOKEN", "1", "2", "3"};

    ArrayList<Integer> ay = new ArrayList<Integer>();
    int num = 0;
    for (int i = 1; i < lines.length; i++) {
    if(lines[i].equals("TOKEN")){
    ay.add(num);
    num = 0;
    continue;
    }
    num += lines[i].charAt(0) - 48;

    }
    ay.add(num);
    for (int j = 0; j < ay.size(); j++) {
    System.out.println(ay.get(j));
    }

    }
    }
      

  9.   

     String[] lines = {"TOKEN", "1", "2",                  "TOKEN", "1", "3", "4",                  "TOKEN", "1", "2", "3"};                   ArrayList<Integer> ay = new ArrayList<Integer>();         int num = 0;         for (int i = 1; i < lines.length; i++) {             if(lines[i].equals("TOKEN")){                 ay.add(num);                 num = 0;                 continue;             }             num += lines[i].charAt(0);                       }         ay.add(num);         for (int j = 0; j < ay.size(); j++) {             System.out.println(ay.get(j));         } 
      

  10.   

    arraylist tlist1 = {1,2};
    arraylist tlist2 = {1,3, 4};
    arraylist tlist3 = {1,2, 3};然后输出数组就这么几个元素, 这样行不?
      

  11.   

    可是最后一段没有"TOKEN"啊,最后那个数值没有添加进去吧
      

  12.   

    可是最后一段没有"TOKEN"啊,最后那个数值没有添加进去吧
    代码倒数第二行是添加最后一个数据的。
      

  13.   

    从后往前添加,最后再反转list
    这样好理解写
    package questions;import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;public class Question0007 { public static void main(String[] args) {
    String[] lines = {"TOKEN", "1", "2", 
            "TOKEN", "1", "3", "4", 
            "TOKEN", "1", "2", "3"};
    List<Integer> list = getList(lines);
    for (Integer integer : list) {
    System.out.println(integer);
    }
    } static List<Integer> getList(String[] arr) {
    final String KEY = "TOKEN";
    List<Integer> list = new ArrayList<Integer>();
    int sum = 0;
    for(int i = arr.length - 1;i >= 0;--i) {
    if(arr[i].equals(KEY)) {
    list.add(sum);
    sum = 0;
    } else {
    sum += Integer.valueOf(arr[i]);
    }
    }
    Collections.reverse(list);
    return list;
    }
    }
      

  14.   

    好吧 上面写了大把代码 我就不写了··
    最主要还是学习别人的解决思路
    这题的思路就是围绕TOKEN做文章
    不管方法性能怎么样先实现功能才是第一位
    然后有时间再优化
      

  15.   

    思路就是 循环数组,不是token ,s+=数组值,是token将s值放入list。可以从数组第二个位置开始,第一个token不管。最后一个token后面的值可以在循环外将s值再放入list一次。
      

  16.   

    private static final String KEY_WORD="T";
    public static void main(String[] args) {
    String[] sts={"T","T","1","2","T","2","3","4","T","1","2","3","T"};
    ArrayList<Integer> list=new ArrayList<Integer>();
    Integer i = null;
    for(int j=0;j<sts.length;j++){
    String str=sts[j];
    if(str.equals(KEY_WORD)){
    if(i!=null){
    list.add(i);
    i=null;
    }
    continue;
    }
    if(i==null)
    i=0;
    i+=Integer.parseInt(str);
    }
    System.out.println(Arrays.toString(list.toArray()));
    }
      

  17.   

    路过,分享一版,临时写的,少了安全验证,希望能帮到lz:
    public static void main(String[] args) {
    String[] lines = { "TOKEN", "1", "2", "TOKEN", "1", "3", "4", "TOKEN",
    "1", "2", "3" };
    String flag = "TOKEN"; // 标记TOKEN
    List<String> result = new ArrayList<>(); // 此代码是往数组后面添加一个标记
    String[] temp = new String[lines.length + 1];
    if (!flag.equals(lines[lines.length - 1])) {
    System.arraycopy(lines, 0, temp, 0, lines.length);
    temp[temp.length - 1] = flag;
    }
    int sum = 0;
    StringBuilder sb = new StringBuilder(); // 用来拼接字符串
    for (int i = 0; i < temp.length; i++) {
    if (!flag.equals(temp[i])) { // 如果不是标记flag,就开始拼接
    sb.append("\"" + temp[i] + "\"" + "+");
    sum += Integer.valueOf(temp[i]); // 计数
    } else { // 如果是标记,就执行初始化,但在初始化前需要将之前拼接的字符添加到ArrayList中
    if (sb.lastIndexOf("+") != -1) {
    sb.replace(sb.length() - 1, sb.length(), ")");
    result.add(sum + sb.toString());
    }
    // 初始化
    sb.replace(0, sb.length(), "(");
    sum = 0;
    }
    }
    for (String value : result) {
    System.out.println(value);
    }
    }
      

  18.   


    package basic;import java.util.ArrayList;
    import java.util.List;public class Count{
    public static void main(String[] args) {
    String[] lines = {"TOKEN", "1", "2", 
    "TOKEN", "1", "3", "4", 
    "TOKEN", "1", "2", "3"};
    List<Integer> store = new ArrayList<Integer>();
    int i = 0;
    for (int t = 0 ; t < lines.length ; t ++) {
    if ( "TOKEN".equals(lines[t]) ) {
    if (i != 0)
    store.add(i);
    i = 0;
    } else {
    if (lines[t].matches("\\d{1}")) {
    i += Integer.parseInt(lines[t]);
    }
    }
    if ((t == lines.length - 1) && i != 0 )
    store.add(i);
    }
    System.out.println(store);
    }
    }楼主好运
      

  19.   


    String[] lines = {"TOKEN", "1", "2", "TOKEN", "1", "3", "4", "TOKEN", "1", "2", "3"};
            List list = new ArrayList(); 
            int sum = 0;
            boolean last = false;
            for (int i = 0; i < lines.length; i++) {
    if (lines[i].equals("TOKEN")) {
    if(i > 0) { list.add(sum); }
    sum = 0;
    if (i < lines.length - 1) { last = true; } else { last = false; }
    continue;
    }
    sum += Integer.parseInt(lines[i]);
    }
            if(last) list.add(sum);
            for (int i = 0; i < list.size(); i++) {
             System.out.println(list.get(i));
    }
      

  20.   

    public static void main(String[] args) {
    String[] lines = { "TOKEN", "1", "2", "TOKEN", "1", "3", "4", "TOKEN",
    "1", "2", "3" };
    List<Integer> list = new ArrayList<Integer>();
    int number = 0;
    for (String str : lines) {
    if (str.equals("TOKEN")) {
    if (number != 0) {
    list.add(number);
    }
    number = 0;
    } else {
    number += Integer.valueOf(str);
    }
    }
    if (number != 0) { // 防止最后一个是 TOKEN
    list.add(number);
    }
    System.out.println(list);
    }
      

  21.   

    等级高,就是厉害点
    五楼的代码比较简洁,把最后获得list的第一个元素去掉就可以了
      

  22.   


    import java.util.ArrayList;public class Demo {

    public static void main(String[] args){
    String[] lines = {"TOKEN", "1", "2","TOKEN", "1", "3", "4","TOKEN", "1", "2", "3"};
    ArrayList<Integer> list =new ArrayList<Integer>();
    int sum=0;
    for(int i=0;i<=lines.length;i++){
    if(i!=11){
    if(lines[i]=="TOKEN"){
    if(sum!=0){
    System.out.print(sum+" ");
    list.add(sum);
    }
    sum=0;
    }else{
    sum=sum+Integer.parseInt(lines[i]);
    }
    }else{
    System.out.print(sum+" ");
    list.add(sum);
    }
    }
    }
    }