打印连续字符不同的字符串。例如,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);
}
}
}
答案 0 :(得分:1)
s.substring(0, pos) + s.substring(pos + 1);
有你的问题。
您应该尝试使用char数组而不是字符串。字符串连接非常慢。将所有内容放在char数组中,而不是更改算法以使用它。