Java程序检查回文字符串

通过使用堆栈,队列或简单循环的简单Java程序,学习检查给定的字符串是否是回文字符串。用最简单的话说,如果一个字符串等于它的反向字符串,那么它就是回文。

回文是单词,短语,数字或的单元以外的序列,其可以是读出的相同的方式在任一方向,一般如果使用的话逗号,分离器或其它分字符被忽略。

1.算法

1.1。第一种方法

要检查回文,我们可以从字符串的开头和结尾选择字符(一个接一个),然后开始相互比较。

  • 选择字符串的第一个字符和最后一个字符并进行比较。如果两个都匹配–继续。其他字符串不是回文。
  • 从开始和最后选择第二个字符,比较两者。如果两个都匹配–继续。其他字符串不是回文。
  • 继续以上比较,直到要比较的两个字符相同或彼此连续。

1.2。第二种方法

除了比较开始和结束处的字符,我们还可以找到给定字符串的反向字符串并比较两个字符串。如果两个字符串相同,则它们是回文。

  • 从给定的字符串获取字符数组
  • 通过从末尾到起始索引迭代数组来构建字符串
  • (可选)–从两个字符串中删除逗号,分隔符或其他单词分隔符
  • 比较两个字符串

在本教程中,我们将看到两种方法的示例。

2.使用反向比较检查回文

此方法使用上面给出的第一种方法。

import java.util.Scanner;

public class Main
{
    public static void main(String[] args) {
         
        System.out.print("Enter any string : ");
        Scanner in = new Scanner(System.in);
         
        //Original string
        String origString = in.nextLine();
        int length = origString.length();
        
        boolean isPalindrome = true;  
        
        for(int beginIndex = 0; beginIndex < length; beginIndex++)
        {
        	if(origString.charAt(beginIndex) != origString.charAt(length-1-beginIndex)) {
        		System.out.println("String is not a palindrome.");
        		isPalindrome = false;
        		break;
        	}
        }
         
        if(isPalindrome) {
        	System.out.println("String is a palindrome.");
        }
    }
}
Enter any string : howtodoinjava
String is not a palindrome.

Enter any string : madam
String is a palindrome.

3.使用StringBuilder.reverse()检查回文

StringBuilder.reverse() 方法是使用库函数反转字符串的最短方法。

import java.util.Scanner;

public class Main 
{
	public static void main(String[] args) {
		
		System.out.print("Enter any string : ");
		Scanner in = new Scanner(System.in);
		
		//Original string
		String origString = in.nextLine();
		
		//Reverse string
		String reverseString = new StringBuilder(origString).reverse().toString();
		
		// Check palindrome string
		if (origString.equals(reverseString)) {
			System.out.println("String is a palindrome.");
		} else {
			System.out.println("String is not a palindrome.");
		}
	}
}
Enter any string : howtodoinjava
String is not a palindrome.

Enter any string : madam
String is a palindrome.

4.使用java.util.Stack检查回文字符串

使用堆栈push()pop()方法,我们可以为给定的字符串构建一个反向字符串。然后我们比较两个字符串。

import java.util.Scanner;
import java.util.Stack;

public class Main 
{
	public static void main(String[] args) 
	{
		System.out.print("Enter any string : ");
		Scanner in = new Scanner(System.in);
		String origString = in.nextLine();

		Stack<Character> stack = new Stack<>();

		//Push all chars in stack
		for (int i = 0; i < origString.length(); i++) {
			stack.push(origString.charAt(i));
		}

		String reverseString = "";

		//Pop all chars from stack one by one and build reverse string
		while (!stack.isEmpty()) {
			reverseString = reverseString + stack.pop();
		}

		//Check palindrome string
		if (origString.equals(reverseString)) {
			System.out.println("String is a palindrome.");
		} else {
			System.out.println("String is not a palindrome.");
		}
	}
}
Enter any string : howtodoinjava
String is not a palindrome.

Enter any string : racecar
String is a palindrome.

5.使用java.util.Queue检查回文字符串

使用Queue add()remove()方法,我们可以为给定的字符串构建一个反向字符串。然后我们比较两个字符串。

import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class Main 
{
	public static void main(String[] args) 
	{
		System.out.print("Enter any string : ");
		Scanner in = new Scanner(System.in);
		String origString = in.nextLine();

		Queue<Character> queue = new LinkedList<>();

        for (int i = origString.length()-1; i >=0; i--) {
            queue.add(origString.charAt(i));
        }

		String reverseString = "";

		//Pop all chars from stack one by one and build reverse string
		while (!queue.isEmpty()) {
			reverseString = reverseString + queue.remove();
		}

		//Check palindrome string
		if (origString.equals(reverseString)) {
			System.out.println("String is a palindrome.");
		} else {
			System.out.println("String is not a palindrome.");
		}
	}
}
Enter any string : howtodoinjava
String is not a palindrome.

Enter any string : racecar
String is a palindrome.

6.使用循环检查回文字符串

这是最简单的方法,它简单地向后迭代char数组,并通过追加char来生成反向字符串来创建字符串。

import java.util.Scanner;

public class Main 
{
	public static void main(String[] args) 
	{
		System.out.print("Enter any string : ");
		Scanner in = new Scanner(System.in);
		String origString = in.nextLine();
		String reverseString = "";
		
		char[] characters = origString.toCharArray();

		for( int i = characters.length - 1 ; i >= 0 ; i-- ) {
			reverseString = reverseString + characters[i];
		}

		//Check palindrome string
		if (origString.equals(reverseString)) {
			System.out.println("String is a palindrome.");
		} else {
			System.out.println("String is not a palindrome.");
		}
	}
}
Enter any string : water
String is not a palindrome.

Enter any string : madam
String is a palindrome.

将您有关的问题交给我 在Java中检查给定的字符串是否是回文

学习愉快!

saigon has written 1440 articles

Leave a Reply