字符串处理 - 提高效率

时间:2014-11-11 02:38:08

标签: java string

打印连续字符不同的字符串。例如,ABAA进入ABA。为此,允许删除字符串中的字符。任务是找到所需删除的最小数量。我的代码计算所需的输出为较小的T值。但是当T(= 10)或字符串长度变大时,由于超时而终止...可以有人给出解决方案吗?

 
Input Format
The first line contains an integer T i.e. the number of test cases.
Next T lines contain a string each.

Output Format
Print minimum number of required steps for each test case.
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
import java.util.ArrayList;

public class AlternatingCharacters{

     static String removeCharAt(String s, int pos) {
          return s.substring(0, pos) + s.substring(pos + 1);
     }


     public static void main(String[] args) {
          Scanner s=new Scanner(System.in);
          int no_of_testcase=s.nextInt();
          String values="";
          int removechars;

          ArrayList<String> arrlist = new ArrayList<String>(no_of_testcase);
          for(int i=0;i<no_of_testcase;i++)
          {
               values=s.next();
               arrlist.add(values);
          }

          for(int i=0;i<arrlist.size();i++)
          {
                removechars=0;
               for(int k=0;k<arrlist.get(i).length()-1;k++)
               {
                  if(arrlist.get(i).charAt(k)==arrlist.get(i).charAt(k+1))
                  {
                      removeCharAt(arrlist.get(i),k+1);
                      removechars++;
                  }
               }
               System.out.println(removechars);
          }

     }
}

1 个答案:

答案 0 :(得分:1)

s.substring(0, pos) + s.substring(pos + 1);

有你的问题。

您应该尝试使用char数组而不是字符串。字符串连接非常慢。将所有内容放在char数组中,而不是更改算法以使用它。