如何忽略字符串回文中的标点符号,大写字母和空格? [英] How can I ignore punctuations, capitalizations and whitespaces from string palindrome?

查看:169
本文介绍了如何忽略字符串回文中的标点符号,大写字母和空格?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用Stack忽略来自字符串回文的标点符号,大小写和空格,以便:

例如:

输入:女士,我是Adam

输出:是Palindrom

这里忽略空格,标点符号和大写字母。



我尝试过:



I want to ignore punctuations, capitalizations and whitespaces from string palindrome using Stack so that:
For example:
Input: Madam, I’m Adam
Output: Yes Palindrom
Here whitespaces, punctuations and capitalizations are ignored.

What I have tried:

class Stack {
	char[] arr;
	int index;
	int size;
	Stack(int size)
	{
		this.size=size;
		index=0;
		arr=new char[size];
	}
	public boolean isFull()
	{
		return (index==size);
	}
	public boolean isEmpty()
	{
		return (index==0);
	}
	public void push(char e)
	{
		if(isFull())
			System.out.print("Stack is Full");
		arr[index]=e;
		index++;
	}
	public char pop()
	{
		if(isEmpty())
			System.out.print("Stack is Empty");
		return arr[--index];
	}
    public static void main(String[] args) {
        String inputString = "Madam, I’m Adam";
		Stack stack=new Stack(inputString.length());
		
        for (int i = 0; i < inputString.length(); i++) 
		{
            stack.push(inputString.charAt(i));
        }

        String reverseString = "";

        while (!stack.isEmpty()) 
		{
            reverseString = reverseString+stack.pop();
        }

        if (inputString.equals(reverseString))
            System.out.println("Yes Palindrome");
        else
            System.out.println("Not Palindrome");

    }
}

推荐答案

我会删除所有非字母字符,转换所有字母降低(或更高)的情况,并最终检查simmetry。例如

I would remove all non-letter characters, transform all letters to lower (or upper) case and eventually check for simmetry. E.g.
class PalChecker
{
  public static boolean isPalindrome(String instr)
  {
    StringBuilder sb = new StringBuilder();

    for (char c : instr.toCharArray())
      if ( Character.isLetter(c) )
        sb.append(Character.toLowerCase(c));

    String str = sb.toString();

    int len = str.length();

    for (int i=0; i < len/2; i++)
      if (str.charAt(i) != str.charAt(len - 1 - i) )
        return false;

    return true;
  }

  public static void main(String args[])
  {
    String inputString = "Madam, I’m Adam";
    boolean isPal = isPalindrome(inputString);
    System.out.printf("The input string is" + (isPal ? "": " not") + " palindrome.\n");
  }
}


这篇关于如何忽略字符串回文中的标点符号,大写字母和空格?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆