首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在数组列表中搜索回文数字。如果列表中存在回文数字,则返回其大小

在数组列表中搜索回文数字。如果列表中存在回文数字,则返回其大小
EN

Stack Overflow用户
提问于 2019-02-13 12:35:57
回答 1查看 72关注 0票数 1

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

代码语言:javascript
运行
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-13 13:06:51

下面是一个伪代码。

代码语言:javascript
运行
复制
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;

下面是完整的代码。

代码语言:javascript
运行
复制
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;
    }

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54662584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档