Re: 401-Palindromes
Posted: Tue Aug 07, 2012 11:46 pm
after each output line, you must print an empty line.
You're right,The program is AC,Thank you very much.brianfry713 wrote:after each output line, you must print an empty line.
Code: Select all
#include <iostream>
using namespace std;
bool mirrored(string palindrome)
{
int counter = 0;
char mirr[20][2] = {{'A','A'},{'E','3'},{'H','H'},{'I','I'}
,{'J','L'},{'L','J'},{'M','M'} ,{'O','O'},{'T','T'},{'U','U'}
,{'V','V'},{'W','W'},{'X','X'},{'Y','Y'},{'Z','5'},{'1','1'}
,{'2','S'},{'3','E'},{'5','Z'},{'8','8'}};
if(palindrome.length() == 1)
{
for(int j = 0; j < 20; j++)
{
if(palindrome[0] == mirr[j][0])
if(palindrome[0] == mirr[j][1])
{
counter++;
break;
}
}
if(counter == 1)
{
return true;
}
else if(counter == 0)
return false;
}
if(palindrome.length() % 2 == 0)
{
for(int i = 0; i < palindrome.length()/2; i++)
{
for(int j = 0; j < 20; j++)
{
if(palindrome[i] == mirr[j][0])
if(palindrome[(palindrome.length()-1) - i] == mirr[j][1])
{
counter++;
break;
}
}
}
if(counter == palindrome.length()/2)
return true;
else
return false;
}
if(palindrome.length() % 2 == 1)
{
for(int i = 0; i < palindrome.length()/2 + 1; i++)
{
for(int j = 0; j < 20; j++)
{
if(palindrome[i] == mirr[j][0])
if(palindrome[(palindrome.length()-1) - i] == mirr[j][1])
{
counter++;
break;
}
}
}
if(counter == palindrome.length()/2 + 1)
return true;
else
return false;
}
return false;
}
bool regPalindrome(string palindrome)
{
int counter = 0;
for(int i = 0; i < palindrome.length()/2; i++)
{
if(palindrome[i] == palindrome[(palindrome.length()-1) - i])
counter++;
}
if(counter == palindrome.length()/2)
return true;
return false;
}
int main()
{
string palindrome;
while(cin >> palindrome)
{
if(regPalindrome(palindrome) == true && mirrored(palindrome) == true)
cout << palindrome << " -- is a mirrored palindrome." << endl;
else if(mirrored(palindrome) == true)
cout << palindrome << " -- is a mirrored string." << endl;
else if(regPalindrome(palindrome) == true)
cout << palindrome << " -- is a regular palindrome." << endl;
else
cout << palindrome << " -- is not a palindrome." << endl;
cout << endl;
}
return 0;
}
Code: Select all
import java.io.*;
import java.util.*;
public class UVaPalindromes {
static TreeMap<Character, Character> reverses;
public static void main( String[] args ) throws IOException {
BufferedReader in = new BufferedReader( new InputStreamReader( System.in ) );
PrintWriter out = new PrintWriter( System.out, true );
reverses = new TreeMap<Character, Character>();
reverses.put( 'A', 'A' );
reverses.put( 'E', '3' );
reverses.put( '3', 'E' );
reverses.put( 'H', 'H' );
reverses.put( 'I', 'I' );
reverses.put( 'J', 'L' );
reverses.put( 'L', 'J' );
reverses.put( 'M', 'M' );
reverses.put( 'O', 'O' );
reverses.put( 'T', 'T' );
reverses.put( 'U', 'U' );
reverses.put( 'V', 'V' );
reverses.put( 'W', 'W' );
reverses.put( 'X', 'X' );
reverses.put( 'Y', 'Y' );
reverses.put( 'Z', '5' );
reverses.put( '1', '1' );
reverses.put( '2', 'S' );
reverses.put( '5', 'Z' );
reverses.put( '8', '8' );
while( true ) {
String s = in.readLine();
if( s == null ) {
break;
}
boolean palindrome = palindrome( s );
boolean mirror = mirror( s );
if( palindrome && mirror ) {
out.println( s + " -- is a mirrored palindrome." );
}
else if( palindrome ) {
out.println( s + " -- is a regular palindrome." );
}
else if( mirror ) {
out.println( s + " -- is a mirrored string." );
}
else {
out.println( s + " -- is not a palindrome." );
}
out.println();
}
}
public static boolean palindrome( String s ) {
for( int i = 0; i < s.length() / 2; i++ ) {
if( s.charAt( i ) != s.charAt( s.length() - i - 1 ) ) {
return false;
}
}
return true;
}
public static boolean mirror( String s ) {
for( int i = s.length() - 1; i >= 0; i-- ){
if( !reverses.containsKey( s.charAt( i ) ) || reverses.get( s.charAt( i ) ) != s.charAt( s.length() - i - 1 ) )
return false;
}
return true;
}
}
Code: Select all
#include<stdio.h>
#include<string.h>
int palindrome_check();
int mirror_check();
int main()
{
char input[1000];
int p,q,i;
while(scanf("%s",&input)!=EOF)
{
for(i=0;i<strlen(input);i++)
{
if(input[i]=='0')
{
input[i]='O';
}
}
p=palindrome_check(input);
q=mirror_check(input);
if(p==0&&q==0)
{
printf("%s -- is not a palindrome.",input);
}
else if(p==1&&q==0)
{
printf("%s -- is a regular palindrome.",input);
}
else if(p==0&&q==1)
{
printf("%s -- is a mirrored string.",input);
}
else if(p==1&&q==1)
{
printf("%s -- is a mirrored palindrome.",input);
}
printf("\n\n");
}
return 0;
}
int palindrome_check(char input[1000])
{
char reversed_string[1000];
int string_length,i,flag=0,j=0;
for(i=strlen(input)-1;i>=0;i--)
{
reversed_string[i]=input[j];
j++;
}
string_length=strlen(input);
for(i=0;i<string_length;i++)
{
if(input[i]==reversed_string[i])
{
}
else
{
flag=1;
break;
}
}
if(flag==1)
{
return 0;
}
else
{
return 1;
}
}
int mirror_check(char input[1000])
{
int i=0,j=0,k=0,flag=0,m;
char l[25][25],str1[1000],str2[1000];
l[0][0]='A';
l[1][0]='E';
l[2][0]='H';
l[3][0]='I';
l[4][0]='J';
l[5][0]='L';
l[6][0]='M';
l[7][0]='O';
l[8][0]='S';
l[9][0]='T';
l[10][0]='U';
l[11][0]='V';
l[12][0]='W';
l[13][0]='X';
l[14][0]='Y';
l[15][0]='Z';
l[16][0]='1';
l[17][0]='2';
l[18][0]='3';
l[19][0]='5';
l[20][0]='8';
l[0][1]= 'A' ;
l[1][1]='3' ;
l[2][1]='H' ;
l[3][1]='I' ;
l[4][1]='L' ;
l[5][1]='J' ;
l[6][1]='M' ;
l[7][1]='O' ;
l[8][1]='2' ;
l[9][1]='T' ;
l[10][1]='U' ;
l[11][1]='V' ;
l[12][1]='W' ;
l[13][1]='X' ;
l[14][1]='Y' ;
l[15][1]='5' ;
l[16][1]='1' ;
l[17][1]='S' ;
l[18][1]='E' ;
l[19][1]='Z' ;
l[20][1]='8' ;
strcpy(str1,input);
for(i=strlen(input)-1;i>=0;i--)
{
str2[i]=input[j];
j++;
}
j=0;
for(k=0;k<strlen(str1);k++)
{
for(i=0;i<21;i++)
{
for(j=0;j<2;j++)
{
if(str1[k]==l[i][j])
{
if(j==0)
{
m=j;
m++;
if(str2[k]==l[i][m])
{
flag=1;
break;
}
else
flag=0;
break;
}
else if(j==1)
{
m=j;
m--;
if(str2[k]==l[i][m])
{
flag=1;
break;
}
else
flag=0;
break;
}
}
}
}
if(flag==0)
{
return 0;
}
}
return 1;
}
Code: Select all
#include<stdio.h>
#include<string.h>
int palindrome_check();
int mirror_check();
int main()
{
char input[1000];
int p,q,i;
while(scanf("%s",&input)!=EOF)
{
for(i=0;i<strlen(input);i++)
{
if(input[i]=='0')
{
input[i]='O';
}
}
p=palindrome_check(input);
q=mirror_check(input);
if(p==0&&q==0)
{
printf("%s -- is not a palindrome.",input);
}
else if(p==1&&q==0)
{
printf("%s -- is a regular palindrome.",input);
}
else if(p==0&&q==1)
{
printf("%s -- is a mirrored string.",input);
}
else if(p==1&&q==1)
{
printf("%s -- is a mirrored palindrome.",input);
}
printf("\n\n");
}
return 0;
}
int palindrome_check(char input[1000])
{
char reversed_string[1000];
int string_length,i,flag=0,j=0;
for(i=strlen(input)-1;i>=0;i--)
{
reversed_string[i]=input[j];
j++;
}
string_length=strlen(input);
for(i=0;i<string_length;i++)
{
if(input[i]==reversed_string[i])
{
}
else
{
flag=1;
break;
}
}
if(flag==1)
{
return 0;
}
else
{
return 1;
}
}
int mirror_check(char input[1000])
{
int i=0,j=0,k=0,flag=0,m;
char l[25][25],str1[1000],str2[1000];
l[0][0]='A';
l[1][0]='E';
l[2][0]='H';
l[3][0]='I';
l[4][0]='J';
l[5][0]='L';
l[6][0]='M';
l[7][0]='O';
l[8][0]='S';
l[9][0]='T';
l[10][0]='U';
l[11][0]='V';
l[12][0]='W';
l[13][0]='X';
l[14][0]='Y';
l[15][0]='Z';
l[16][0]='1';
l[17][0]='2';
l[18][0]='3';
l[19][0]='5';
l[20][0]='8';
l[0][1]= 'A' ;
l[1][1]='3' ;
l[2][1]='H' ;
l[3][1]='I' ;
l[4][1]='L' ;
l[5][1]='J' ;
l[6][1]='M' ;
l[7][1]='O' ;
l[8][1]='2' ;
l[9][1]='T' ;
l[10][1]='U' ;
l[11][1]='V' ;
l[12][1]='W' ;
l[13][1]='X' ;
l[14][1]='Y' ;
l[15][1]='5' ;
l[16][1]='1' ;
l[17][1]='S' ;
l[18][1]='E' ;
l[19][1]='Z' ;
l[20][1]='8' ;
strcpy(str1,input);
for(i=strlen(input)-1;i>=0;i--)
{
str2[i]=input[j];
j++;
}
j=0;
for(k=0;k<strlen(str1);k++)
{
for(i=0;i<21;i++)
{
for(j=0;j<2;j++)
{
if(str1[k]==l[i][j])
{
if(j==0)
{
m=j;
m++;
if(str2[k]==l[i][m])
{
flag=1;
break;
}
else
flag=0;
break;
}
else if(j==1)
{
m=j;
m--;
if(str2[k]==l[i][m])
{
flag=1;
break;
}
else
flag=0;
break;
}
}
}
}
if(flag==0)
{
return 0;
}
}
return 1;
}
Code: Select all
#include <cstdio>
#include <iostream>
#include <string>
#define NMAX 255
using namespace std;
char rev[NMAX];
int n;
string A, B;
void prep()
{
rev['E'] = '3'; rev['J'] = 'L'; rev['L'] = 'J';
rev['S'] = '2'; rev['Z'] = '5'; rev['2'] = 'S';
rev['3'] = 'E'; rev['5'] = 'Z';
}
int main()
{
//freopen("input", "r", stdin);
prep();
int i, type, t = 0;
while (cin >> A)
{
n = A.size(); type = 0; t++;
if (t > 1)
printf("\n");
type ^= 1;
for (i = 1; i <= n / 2; i++)
if (A[i - 1] != A[n - i])
{
type ^= 1;
break ;
}
B = A;
for (i = 0; i < n; i++)
if (rev[B[i]])
B[i] = rev[B[i]];
type ^= 2;
for (i = 1; i <= n; i++)
if (A[i - 1] != B[n - i])
{
type ^= 2;
break ;
}
cout << A;
switch (type)
{
case 0: cout << " -- is not a palindrome.\n";
break ;
case 1: cout << " -- is a regular palindrome.\n";
break ;
case 2: cout << " -- is a mirrored string.\n";
break ;
case 3: cout << " -- is a mirrored palindrome.\n";
break ;
}
}
return 0;
}