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);
[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] 技术略挫,不要笑我
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; }
@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; }
public static void main(String args[]) { ArrayList <Integer> arraylist = new ArrayList <Integer>();
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;
路过,分享一版,临时写的,少了安全验证,希望能帮到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); } }
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); } }楼主好运
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)); }
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); }
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);
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));
}
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]
技术略挫,不要笑我
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;
}
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;
}
{
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);
}
}
我这个好像时间复杂度高,仅供参考
// 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);
}
}
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));
}
}
}
arraylist tlist2 = {1,3, 4};
arraylist tlist3 = {1,2, 3};然后输出数组就这么几个元素, 这样行不?
代码倒数第二行是添加最后一个数据的。
这样好理解写
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;
}
}
最主要还是学习别人的解决思路
这题的思路就是围绕TOKEN做文章
不管方法性能怎么样先实现功能才是第一位
然后有时间再优化
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()));
}
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);
}
}
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);
}
}楼主好运
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));
}
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);
}
五楼的代码比较简洁,把最后获得list的第一个元素去掉就可以了
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);
}
}
}
}