Java 根据CPU和内存利用率加上复杂性,哪种方法是计算字符串中令牌数的更好方法。我有两种方法
方法1: 我在这方面使用了内置的方法,比如修剪和拆分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
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();
}
}