我做了一個小程序,它檢查哪些索引需要刪除才能成爲迴文。由於在一次執行中可能會有很多測試用例,我不得不使用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
也許這會更好地解釋你寫在文字/僞代碼而不是在實際代碼中的方法 –