Проверьте строку на палиндром - PullRequest
84 голосов
/ 10 ноября 2010

A палиндром - это слово, фраза, число или другая последовательность единиц, которую можно прочитать одинаково в любом направлении.

Чтобы проверить, является ли слово палиндромом, я получаюсимвольный массив слова и сравнить символы.Я проверил это, и это похоже на работу.Однако я хочу знать, правильно ли это или есть что-то, что можно улучшить.

Вот мой код:

public class Aufg1 {
    public static void main(String[] args) {
        String wort = "reliefpfpfeiller";
        char[] warray = wort.toCharArray(); 
        System.out.println(istPalindrom(warray));       
    }

    public static boolean istPalindrom(char[] wort){
        boolean palindrom = false;
        if(wort.length%2 == 0){
            for(int i = 0; i < wort.length/2-1; i++){
                if(wort[i] != wort[wort.length-i-1]){
                    return false;
                }else{
                    palindrom = true;
                }
            }
        }else{
            for(int i = 0; i < (wort.length-1)/2-1; i++){
                if(wort[i] != wort[wort.length-i-1]){
                    return false;
                }else{
                    palindrom = true;
                }
            }
        }
        return palindrom;
    }
}

Ответы [ 35 ]

1 голос
/ 20 апреля 2017

Используя стек, это можно сделать так:

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
import java.util.*;

public class Solution {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str=in.nextLine();
        str.replaceAll("\\s+","");
        //System.out.println(str);
        Stack<String> stack=new Stack<String>();
        stack.push(str);
        String str_rev=stack.pop();
        if(str.equals(str_rev)){
            System.out.println("Palindrome"); 
        }else{
             System.out.println("Not Palindrome");
        }
    }
}
0 голосов
/ 18 августа 2018

импорт java.io. ; импорт java.util. ;

Публичный класс Solution {

public static void main(String[] args) {

    Scanner sc=new Scanner(System.in);
    String A=sc.next();
    char[] array = A.toCharArray();
    String str = "";
    for(int i=A.length()-1;i>=0;i--){
        str = str + array[i];
    }
    if(A.equalsIgnoreCase(str))System.out.println("Yes");
    else System.out.println("No");

} }

0 голосов
/ 29 апреля 2018
 public boolean isPalindrome(String input) {
    char[] inputChars = input.toCharArray();
    int inputLength = inputChars.length;
    int inputMid = inputLength / 2;

    for (int i = 0; i <= inputMid; i++) {
        if (inputChars[i] != inputChars[inputLength - i - 1]) {
             return false;
        } 
    }
    return true;
}

Метод определяет, является ли строковый ввод палиндромом.В этом методе цикл повторяется для половины длины ввода, что приводит к снижению производительности и сокращению применения.

0 голосов
/ 28 декабря 2017
package basicprogm;

public class pallindrome {

  public static void main(String[] args) {
    // TODO Auto-generated method stub

    String s= "madam" ;
    //to store the values that we got in loop
    String t="";
    for(int i=s.length()-1;i>=0;i--){
      t=t+s.charAt(i);
    }
    System.out.println("reversed word is "+ t);

    if (t.matches(s)){
      System.out.println("pallindrome");
    }
    else{
      System.out.println("not pallindrome");
    }
  }
}
0 голосов
/ 28 июля 2017

For-loop содержит sub.length() / 2 - 1. Он должен быть вычтен с 1, так как элемент в середине строки не должен проверяться.

Например, если нам нужно проверить строку с 7 символами (1234567), то 7/2 => 3, а затем мы вычтем 1, и поэтому позиции в строке станут (0123456). Символы проверяются с помощью элементов 0, 1, 2 с 6, 5, 4 соответственно. Мы не заботимся об элементе в позиции 3, так как он находится точно в середине строки.

 private boolean isPalindromic(String sub) {
        for (int i = 0; i <= sub.length() / 2 - 1; i++) {
            if (sub.charAt(i) != sub.charAt(sub.length() - 1 - i)) {
                return false;
            }
        }
        return true;
    }
0 голосов
/ 12 июня 2017

enter image description here

import java.util.Collections;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class GetAllPalindromes 
{
    static Scanner in;

    public static void main(String[] args) 
    {
        in = new Scanner(System.in);
        System.out.println("Enter a string \n");
        String abc = in.nextLine();
        Set a = printAllPalindromes(abc);
        System.out.println("set is   " + a);
    }

    public static Set<CharSequence> printAllPalindromes(String input) 
    {
        if (input.length() <= 2) {
            return Collections.emptySet();
        }

        Set<CharSequence> out = new HashSet<CharSequence>();
        int length = input.length();

        for (int i = 1; i < length - 1; i++) 
        {
            for (int j = i - 1, k = i + 1; j >= 0 && k < length; j--, k++) 
            {
                if (input.charAt(j) == input.charAt(k)) {
                    out.add(input.subSequence(j, k + 1));
                } else {
                    break;
                }
            }
        }
        return out;
    }
}

**Get All Palindrome in s given string**

выход D: \ Java> Java GetAllPalindromes Введите строку

Привет, пользователь, нитин, мой лучший друг, вау!

Ответ набор [нитин, нитин, вау, вау, ити]

D: \ Java>

0 голосов
/ 04 декабря 2015
import java.util.Scanner;


public class Palindrom {

    public static void main(String []args)
    {
        Scanner in = new Scanner(System.in);
        String str= in.nextLine();
        int x= str.length();

        if(x%2!=0)
        {
            for(int i=0;i<x/2;i++)
            {

                if(str.charAt(i)==str.charAt(x-1-i))
                {
                    continue;
                }
                else 
                {
                    System.out.println("String is not a palindrom");
                    break;
                }
            }
        }
        else
        {
            for(int i=0;i<=x/2;i++)
            {
                if(str.charAt(i)==str.charAt(x-1-i))
                {
                    continue;
                }
                else 
                {
                    System.out.println("String is not a palindrom");
                    break;
                }

            }
        }
    }

}
0 голосов
/ 24 октября 2016
private static boolean isPalindrome(String word) {

        int z = word.length();
        boolean isPalindrome = false;

        for (int i = 0; i <= word.length() / 2; i++) {
            if (word.charAt(i) == word.charAt(--z)) {
                isPalindrome = true;
            }
        }

        return isPalindrome;
    }
0 голосов
/ 28 марта 2017

Фрагмент кода:

import java.util.Scanner;

 class main
 {
    public static void main(String []args)
    {
       Scanner sc = new Scanner(System.in);
       String str = sc.next();
       String reverse = new StringBuffer(str).reverse().toString();

        if(str.equals(reverse))
            System.out.println("Pallindrome");
        else
            System.out.println("Not Pallindrome");
     }
}
0 голосов
/ 03 февраля 2017

здесь, проверяя самый большой палиндром в строке, всегда начиная с 1-го символа.

public static String largestPalindromeInString(String in) {
    int right = in.length() - 1;
    int left = 0;
    char[] word = in.toCharArray();
    while (right > left && word[right] != word[left]) {
        right--;
    }
    int lenght = right + 1;
    while (right > left && word[right] == word[left]) {

        left++;
        right--;

    }
    if (0 >= right - left) {
        return new String(Arrays.copyOf(word, lenght ));
    } else {
        return largestPalindromeInString(
                new String(Arrays.copyOf(word, in.length() - 1)));
    }
}
...