Глава 7 (продолжение 2)
Задача 7.2 "Палиндромы "
Палиндромы - это слова или предложения, которые одинаково читаются в обоих неправлениях (слева направо и справа налево), если не учитывать знаки препинания. Известными палиндромами являются:
Madam, I'm Adam
Able was I ere I saw Elba
Напишите метод, проверяющий, является строка палиндромом или нет. Вызовите метод из тестовой программы.
Решение
Напишем функцию, в параметр которой будем передавать строку и которая будет проверять является ли строка палиндромом. Программа, и функция isPalind, работает так же и с кириллицей, но не правильно выводит кириллицу на консоль.
boolean isPalind(String str){
char study [] = str1.toCharArray();//превратим в массив символов
char study1[] = new char[result.length()];//массив для результирующей
int j = 0;
//очистим в цикле строку от "не букв"
for(int i=0;i < result.length();i++){
System.out.println();
//выведем "чистую" без пробелов строку
for(int k=0;k < study1.length;k++){
System.out.println();
//превратим массив символов в строку
// и "обрежем" пробелы спереди и сзади
String string = new String(study1);
System.out.println(string);
String res = string.trim();
//реверсируем посимвольно строку
StringBuffer lettersBuff = new StringBuffer(string);
String lettersRev = lettersBuff.reverse().toString();
System.out.println(lettersRev);
String res1 = lettersRev.trim();
//сравним две строки, если эквивалентны - палиндром
if(res.equals(res1)){
Код программы:
import java.text.*;
import javagently.*;
import java.util.*;
import java.io.*;
class Palindrom01 {
Palindrom01()throws IOException {
Stream in = new Stream (System.in);
System.out.println("Palindrom");
//----------------------------
System.out.println();
String str = "Madam, I'm Adam";
System.out.println(str);
boolean b = isPalind(str);
if(b){
System.out.println("Palindrom!!");
}
else{
System.out.println("No Palindrom");
}
//------------------------------
System.out.println();
str = "Able was I ere I saw Elba ";
System.out.println(str);
b = isPalind(str);
if(b){
System.out.println("Palindrom!!");
}
else{
System.out.println("No Palindrom");
}
//----------------------------
System.out.println();
str = "А роза упала на лапу азора ";
System.out.println(str);
b = isPalind(str);
if(b){
System.out.println("Palindrom!!");
}
else{
System.out.println("No Palindrom");
}
//----------------------------
System.out.println();
str = "Hello World ";
System.out.println(str);
b = isPalind(str);
if(b){
System.out.println("Palindrom!!");
}
else{
System.out.println("No Palindrom");
}
//---------------
System.out.println("Type any char");
String filename = in.readString();
}//construct
public static void main ( String[] args) throws IOException {
new Palindrom01 ();
}
boolean isBigAlfabet(char c){
if("ABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf(c) != -1) return true;
return false;
}
boolean isPalind(String str){
String result = str.trim(); // уберем пробелы
String str1 = result.toUpperCase();//приведем в верхний регистр
char study [] = str1.toCharArray();//превратим в массив символов
char study1[] = new char[result.length()];//массив для результирующей
int j = 0;
//очистим в цикле строку от "не букв"
for(int i=0;i < result.length();i++){
char ch = study[i];
if(isBigAlfabet(ch)){
study1[j] = study[i];
j++;
}
}
System.out.println();
//выведем "чистую" без пробелов строку
for(int k=0;k < study1.length;k++){
char ch = study1[k];
System.out.print(ch);
}
System.out.println();
//превратим массив символов в строку
// и "обрежем" пробелы спереди и сзади
String string = new String(study1);
System.out.println(string);
String res = string.trim();
//реверсируем посимвольно строку
StringBuffer lettersBuff = new StringBuffer(string);
String lettersRev = lettersBuff.reverse().toString();
System.out.println(lettersRev);
String res1 = lettersRev.trim();
//сравним две строки, если эквивалентны - палиндром
if(res.equals(res1)){
return true;
}
else{
return false;
}
}//isPalind
}
Результат :
Palindrom
Madam, I'm Adam
MADAMIMADAM
Able was I ere I saw Elba
ABLEWASIEREISAWELBA
A ?ica oiaea ia eaio aci?a
Palindrom!!
Hello World
HELLOWORLD
MADAMIMADAM
MADAMIMADAM
Palindrom!!
ABLEWASIEREISAWELBA
ABLEWASIEREISAWELBA
Palindrom!!
HELLOWORLD
DLROWOLLEH
No Palindrom
Type any char
Назад |
Начало урока |
Вверх |
Вперед
Содержание