Java 根据CPU和内存利用率加上复杂性,哪种方法是计算字符串中令牌数的更好方法。我有两种方法

Java 根据CPU和内存利用率加上复杂性,哪种方法是计算字符串中令牌数的更好方法。我有两种方法,java,string,token,Java,String,Token,方法1: 我在这方面使用了内置的方法,比如修剪和拆分 import java.io.*; import java.util.*; public class Solution { public static void main(String[] args) { Scanner scan = new Scanner(System.in); String s = scan.nextLine(); if(s.trim().length()==0

方法1: 我在这方面使用了内置的方法,比如修剪和拆分

import java.io.*;
import java.util.*;

public class Solution {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String s = scan.nextLine();
        if(s.trim().length()==0){
        System.out.println('0');
        return;
        }
        String[] token = s.trim().split("[\\s!,?._'@]+");
        System.out.println(token.length);
        for(String i : token){
            System.out.println(i);
        }
        scan.close();
    }
} 
方法2 在这个

import java.io.*;
导入java.util.*;
公共类解决方案{
公共无效函数(字符串s){
ArrayList arrlist=新的ArrayList();
int i=0;
StringBuilder st=新的StringBuilder();

while(ias a sidenote:
s.trim().split(“[\\s!,?.['@]+”);
将在一个或多个事件上拆分,这意味着
AA!!!!!BB
将产生
2
,因此这是从逻辑上开始的错误方法。(或者这不是关于计算特殊字符)?@SomeJavaGuy为什么这是错的?他的第二个解决方案也有同样的作用。我不知道。我想如果你想确保答案正确,你需要自己测量。我可以试着猜测,但你不想只是猜测。:-)要知道的重要一点是:除非您能证明它的性能太差,否则在代码中维护哪个方法更方便更好。
import java.io.*;
import java.util.*;

public class Solution {

    public void func(String s){
        ArrayList<StringBuilder> arrlist=new ArrayList<>();
        int i=0; 
        StringBuilder st=new StringBuilder();
        while(i<s.length()){

            if(Character.isLetter(s.charAt(i))){
                st.append(s.charAt(i));
            }
            else{
                if(st.length()!=0)
                    arrlist.add(st);
                st=new StringBuilder();
            }
            i++;
        }
        if(st.length()!=0){
            arrlist.add(st);
        }
        System.out.println(arrlist.size());
        for(StringBuilder a:arrlist){
            System.out.println(a);
        }
    }

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String s = scan.nextLine();
        // Write your code here.
        Solution obj=new Solution();
        obj.func(s);
        scan.close();
    }
}