Java 在数组列表中搜索回文数。如果列表中存在回文数,请返回其大小

Java 在数组列表中搜索回文数。如果列表中存在回文数,请返回其大小,java,numbers,time-complexity,palindrome,space-complexity,Java,Numbers,Time Complexity,Palindrome,Space Complexity,检查列表中是否存在回文编号。 如果找到,则返回其大小,否则返回-1 public class Program{ public static boolean palindrome(String list){ String reversedString = ""; for (int i = list.length() -1; i >=0; i--){ reveresedString += list.charAt(i) } retu

检查列表中是否存在回文编号。 如果找到,则返回其大小,否则返回-1

public class Program{
   public static boolean palindrome(String list){
     String reversedString = ""; 
     for (int i = list.length() -1; i >=0; i--){
        reveresedString += list.charAt(i)
     }
     return list.equals(revereseString); 
  }
}

sample input: [3,5,2,6,3,6,2,1]
palindrome number found: [2,6,3,6,2]
sample output: 5
这是一个伪代码

output = -1;
for (i = 0; i < list.length; i++){
    num = list[i];
    indices[] = \\ get all the indices which the "num" value appears, only include those indices that are greater than "i"
    for (j = 0; j < indices.length; j++){
        flag = true;
        k = i;
        for (l = indices[j]; l >= k; l--, k++){
             if (list[k] != list[l]) {
                 flag = false;
                 break;
             } 
        }
        if (flag){
           length = (indices[j] - i) + 1;
           if (length != 1 && length > output) { // checking of length != 1 will exclude those palindromes of length 2
               output = length;
           }
        }
    }
}
return output;
output=-1;
对于(i=0;i=k;l--,k++){
如果(列表[k]!=列表[l]){
flag=false;
打破
} 
}
国际单项体育联合会(旗){
长度=(指数[j]-i)+1;
如果(长度!=1&&length>output){//检查长度!=1将排除长度为2的回文
输出=长度;
}
}
}
}
返回输出;
这是完整的代码

public class Main {

    /**
     * @param args
     */
    public static void main(String[] args) {
        int[] list = { 3, 5, 2, 2, 6, 3, 6, 3, 6, 3, 6, 2, 2, 1 };
        System.out.print(palindrome(list));
    }

    public static int palindrome(int[] list) {
        int output = -1;
        for (int i = 0; i < list.length; i++) {
            int num = list[i];
            ArrayList<Integer> indices = getIndices(list, i, num);
            for (int j = 0; j < indices.size(); j++) {
                boolean flag = true;
                int k = i;
                for (int l = indices.get(j); l >= k; l--, k++) {
                    if (list[k] != list[l]) {
                        flag = false;
                        break;
                    }
                }
                if (flag) {
                    int length = (indices.get(j) - i) + 1;
                    if (length != 1 && length > output) {
                        output = length;
                    }
                }
            }
        }
        return output;
    }

    public static ArrayList<Integer> getIndices(int[] list, int start, int num) {
        ArrayList<Integer> result = new ArrayList<Integer>();

        for (int i = start + 1; i < list.length; i++) {
            if (list[i] == num) {
                result.add(i);
            }
        }

        return result;
    }

}
公共类主{
/**
*@param args
*/
公共静态void main(字符串[]args){
int[]list={3,5,2,2,6,3,6,3,6,3,6,2,2,1};
系统输出打印(回文(列表));
}
公共静态int回文(int[]列表){
int输出=-1;
for(int i=0;i=k;l--,k++){
如果(列表[k]!=列表[l]){
flag=false;
打破
}
}
国际单项体育联合会(旗){
int-length=(index.get(j)-i)+1;
if(长度!=1&&length>输出){
输出=长度;
}
}
}
}
返回输出;
}
公共静态ArrayList GetIndexes(int[]列表,int开始,int num){
ArrayList结果=新建ArrayList();
对于(int i=start+1;i
这可能会激发你的灵感。我有两个问题:1)我们是将回文数按顺序组合还是按顺序组合。2) 回文数的长度范围应该是多少欢迎使用堆栈溢出。我想你有问题吧?你最好明确地问。我们中的许多人不善于思考和阅读。