Следующий ответ из-за тега oop
.
Ваш алгоритм Палиндрома
Шаги, которые вы делаете:
- сделать *От 1009 * до
char[]
- создайте перевернутое
char[]
первого - сравните два
char[]
Перепишите в OOP
2.Шаг алгоритма
Я просто копирую и вставляю ваш код в новый метод и возвращаю новый Word
.
public Word reverse() {
char[] reversed = new char[text.length()];
int j = 0;
for (int i = text.length() - 1; i >= 0; i--) {
reversed[j]= text.charAt(i);
j++;
}
return new Word(String.valueOf(reversed));
}
3.Шаг алгоритма
Поскольку метод reverse
возвращает новый Word
, мне нужно сравнить два Word
-объекта.Это можно сделать с помощью equals
-метода.Там нам нужно переопределить его с Object
.
Алгоритм
public boolean isPalindrome() {
Word reversed = reverse();
return this.equals(reversed);
}
Где находится 1. Шаг
Нам просто здесь это не нужно,потому что мы сравниваем два Word
с, а не два char[]
.
полный код
public class Word {
private String text;
public Word(String text) {
this.text = text;
}
public boolean isPalindrome() {
Word reversed = reverse();
return this.equals(reversed);
}
public Word reverse() {
char[] reversed = new char[text.length()];
int j = 0;
for (int i = text.length() - 1; i >= 0; i--) {
reversed[j]= text.charAt(i);
j++;
}
return new Word(String.valueOf(reversed));
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Word word = (Word) o;
return text != null ? text.equals(word.text) : word.text == null;
}
@Override
public int hashCode() {
return text != null ? text.hashCode() : 0;
}
}