又见回文

本文介绍了一种判断字符串是否为回文串的算法实现,该算法能够处理包含空格的大规模字符串,并提供了完整的Java代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Time Limit: 1000 ms  Memory Limit: 65536 KiB
Problem Description

    “回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。现在呢,就是让你判断输入的字符串是否是回文串。

Input

    有多组输入,每行输入一串字符,保证字符串长度不会大于 100000,字符串由大小写英文字母和空格组成,以字符串“2013”作为结束标志。

Output

    每行输出一个字符串,如果输入是回文串,输出“YES”,否则输出“NO”(注意:判断的时候空格是不作判断的,详见样例)。

Sample Input
aaaa
ggg g
lozxvxoMJBCHsTXooXTsHCBJMoxvxzol
i am a good acmer
2013
Sample Output
YES
YES
YES
NO
Hint
 
Source

fenggang

import java.util.*;
public class Main
{  
	    public static void main(String args[])
	    { 
	    	Scanner cin=new Scanner(System.in);  
	    	String s1;
	    	char []ch = new char[100010];
	    	int i , j, num ,flag;
	    	while(cin.hasNext())
	    	{
	    		flag = 1;
	    		s1 = cin.nextLine();
	    		num = s1.length();
	    		ch = s1.toCharArray();
	    		if(s1.compareTo("2013")==0) break;
	    		for(i = 0,j = num-i-1;i<num/2&&j>num/2;)
	    		{
	    			if(ch[i]==' ')i++;
	    			if(ch[j]==' ')j--;
	    			if(ch[i]!=' '&&ch[j]!=' ')
	    			{
	    				if(ch[i]==ch[j]) 
	    				{
	    					i++;
	    					j--;
	    				}
	    				else 
	    				{
	    					flag = 0;
	    					break;
	    				}
	    			}
	    		}
	    		if(flag==0)
	    			System.out.println("NO");
	    		else 
	    			System.out.println("YES");
	    	}
	    	cin.close();
	    }   
	  
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值