OJ系列-UVA272 (Tex Quotes)java版

  • Post author:
  • Post category:java


今天开始每天一道OJ题:

今天是第一天,我终于感觉到了OJ题的狡猾,虽然之前有刷过蓝桥练习系统发现给出的样例都是十分变态的,没想到OJ居然如此细节.



题目描述:

在TeX中, 左双引号是“ , 右双引号是’’。 输入一篇包含双引号的文章, 你的任务是

把它转换成TeX的格式。



样例输入:

 "To be or not to be," quoth the Bard, "that
  is the question".



样例输出:

`` To be or not to be,'' quoth the Bard, ``that
is the question''.

请注意这个“ 符号,因为这个符号我多次不能AC,这也是我说的细节所在,首先题目的意思很明确,初读题目觉得还是挺简单的,不就是当读到的字符是”的时候,就转换为“,的确是这么回事但其中的小细节是怎么读取,如果一个样例存在多行,还用nextline()来读取就肯定存在问题,这里需要借助到IO来处理,其次是怎么判断是左”,还是右”,在平时由于输入法的原因,我打出的左右两个”“是有一点的倾斜度,使我认为左右两个”是不同的字符,当我简单的编写了一个小程序输出左右两个’‘的ASCII码的时候,都是34,才发现这是一个字符,经过简单的分析后,要想单纯的判难是左还是右’’,还是可以解决的,注意是单纯的,样例比较人性的情况下还是很简单的就能判断。定义一个变量,每次判断是’’后就改变该变量,即做一个开关,就能解决这个问题,但是是在样例人性化的情况下,比如有这样一个情况”””“我就是样例””””,当多个相同的”符号连在一起你该怎么告诉计算机哪个是左哪个是右,按照我们上面的思路是第一个出现的左,第二个出现的是右,第三个出现又是左,当情况变成两个左中间一句话后面两个右的时候,就会误判了上面的那个例子我就是想表达这个意思,无奈CSDN太人性化,就像我说的会倾斜,当这””中间有字的时候就会倾斜。可能是我神经太敏感,因为题目说的是文章,好像没有我说的这种情况的句子,但是比赛比的就是细节,要把所有的可能性考虑完全。好在是我多虑了,下面是代码:



代码实现

import java.io.BufferedReader;

public class Uva272 {

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		BufferedReader cin=new BufferedReader(new InputStreamReader(System.in));
		char c=0;
		int f=1 ;
		while((c=(char)cin.read())!=-1){
			if(c=='"'&f==1){
				System.out.print("``");
				f=-f;
				continue;
				
			}
		
			if(c=='"'&&f==-1){
				System.out.print("''");
				f=-f;
				continue;
			}
			System.out.print(c);
			
		}

	}

}



说明

第一次提交的时候,提示我编译错误,我是在onlinejudge上提交的,可能谷歌翻译的时候存在误差, 第一次的时候我的输出语句是System.out.print(’”’);结果报错,我在eclipse上是没用任何错误提示的

在这里插入图片描述
这是一个需要注意的地方,可能是由于JDK的版本不同,但是我写的时候用的是jdk1.6,提交网站要求的是jdk1.8,理应说不存在问题,其次是在一些地方复制的样例过去粘贴,会遇到换行就中断了,一开始我还在怀疑代码的问题,后来我改成了从文件中读取相同的一句话,输出的结果和要求输出的一样,让我确认了不是代码的问题,也成功AC了。



版权声明:本文为qq_44864169原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。