Назад | Начало урока | Вперед
Содержание

Глава 7 (продолжение 2)

Задача 7.2 "Палиндромы "

Палиндромы - это слова или предложения, которые одинаково читаются в обоих неправлениях (слева направо и справа налево), если не учитывать знаки препинания. Известными палиндромами являются:

Madam, I'm Adam
Able was I ere I saw Elba

Напишите метод, проверяющий, является строка палиндромом или нет. Вызовите метод из тестовой программы.

Решение

Напишем функцию, в параметр которой будем передавать строку и которая будет проверять является ли строка палиндромом. Программа, и функция isPalind, работает так же и с кириллицей, но не правильно выводит кириллицу на консоль.

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

Код программы:


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
MADAMIMADAM
MADAMIMADAM
Palindrom!!

Able was I ere I saw Elba

ABLEWASIEREISAWELBA
ABLEWASIEREISAWELBA
ABLEWASIEREISAWELBA
Palindrom!!

A ?ica oiaea ia eaio aci?a

Palindrom!!

Hello World

HELLOWORLD
HELLOWORLD
DLROWOLLEH
No Palindrom
Type any char


Назад | Начало урока | Вверх | Вперед
Содержание

Hosted by uCoz