Java 在数组列表中搜索回文数。如果列表中存在回文数,请返回其大小
检查列表中是否存在回文编号。 如果找到,则返回其大小,否则返回-1Java 在数组列表中搜索回文数。如果列表中存在回文数,请返回其大小,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
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) 回文数的长度范围应该是多少欢迎使用堆栈溢出。我想你有问题吧?你最好明确地问。我们中的许多人不善于思考和阅读。