我做了一个小程序,它检查哪些索引需要删除才能成为回文。由于在一次执行中可能会有很多测试用例,我不得不使用for循环的深层嵌套。我想知道是否有任何替代方法来嵌套循环以提高性能。替代嵌套循环以提高代码的性能?
以下是我的代码:
import java.util.*;
import java.io.*;
public class Testhis {
public static void main(String[] args) throws Exception {
Scanner sc=new Scanner(System.in);
//System.out.println("No. of testcases:");
int testcases=sc.nextInt();
String strin[]=new String[testcases];
for (int i=0;i<testcases;i++)
strin[i]=sc.next();
int res[]= checkPalindromeIndex(strin);
for(int i=0;i<res.length;i++)
System.out.println(res[i]);
}
private static int[] checkPalindromeIndex(String[] strin) {
int result[]=new int[strin.length];
a:
for(int i=0;i<strin.length;i++){
System.out.println("checking:::::"+strin[i]);
if(checkPalFlag(strin[i])){
result[i]=-1;
continue a;
}
else{
for(int j=0;j<strin[i].length();j++){
StringBuilder sb=new StringBuilder(strin[i]);
String teststr=sb.deleteCharAt(j).toString();
System.out.println("resulting string:"+teststr);
if(checkPalFlag(teststr)){
result[i]=j;
continue a;
}
}
}
}
return result;
}
private static boolean checkPalFlag(String string) {
boolean flag=false;int len=string.length();
for(int i=0;i<(len+1)/2;i++){
if(string.charAt(i)==string.charAt(len-(i+1))){
flag=true;
continue;
}
else{
flag=false;
break;
}
}
System.out.println("string "+string+" is a palindrome? :"+flag);
return flag;
}
}
我投票结束这个问题作为题外话,因为这个问题属于[代码评论](http://codereview.stackexchange.com/)。 – Seelenvirtuose
你的意思是说这不是一个合适的问题吗?我不希望我的代码被审查..我想要的问题的解决方案不问代码被审查。代码仅仅是一个例子 – rydz
也许这会更好地解释你写在文字/伪代码而不是在实际代码中的方法 –