shivam gohel Ответов: 1

Ошибка при проверке того, является ли данная строка палиндромом или нет


я очень хорошо разбираюсь в c++. а в последнее время я изучаю java .
но я застрял здесь и не знаю, как программа всегда дает мне, что строка - это палиндром.

//here goes my code
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
import java.util.Collections;
public class Test
{
	public static void display(ArrayList<Character> arr)
	{
		for(int i=0 ; i<arr.size() ; i++)
			System.out.print(arr.get(i) + " " );
		System.out.println();
	}
	public static boolean Check(ArrayList<Character> arr )
	{
		ArrayList<Character> temp = new ArrayList<Character>();
		temp = arr;
		Collections.reverse(temp);
		if(arr.equals(temp))
			return true;
		else
			return false;
	}
	public static void main(String[] args)
	{
		Scanner input = new Scanner(System.in);
		String name;
		System.out.println("enter the string");
		name = input.next();
		System.out.println(name.length());
		ArrayList<Character> arr = new ArrayList<Character>();
		for(int i=0 ; i<name.length() ; i++)
		{
			arr.add(name.charAt(i));
		}
		// it is always showing me that it is palindrome
		if(Check(arr))
			System.out.println("it is a palindrome");
		else
			System.out.println("it is not a palindrome");
	}
}


Что я уже пробовал:

ДОЛЖНЫ ПРОЧИТАТЬ:

Видите ли, я знаю, что есть гораздо лучшие способы сделать эту глупость.Поэтому, пожалуйста, не предлагайте мне лучшую реализацию . Я был бы очень благодарен, если бы вы нашли ошибку в этом коде.

Спасибо.

ZurdoDev

Просто используйте отладчик, чтобы увидеть, что происходит.

phil.o

Я не понимаю, как можно быть "очень хорошим в c++", не зная, как отлаживать простой алгоритм.

1 Ответов

Рейтинг:
8

Mohibur Rashid

В вашей логической функции проверки вы присваиваете arr temp. arr и temp-это одни и те же объекты. Если вы меняете темп, вы меняете Арр. Вам лучше посмотреть, как клонировать объект, а не оператор присваивания