UVA272

UVA272 UVA272 TeX中的引号 TEX Quotes洛谷-UVA272题目描述编写程序处理输入文本将文本中所有普通直双引号 按出现顺序交替替换第 1、3、5 等奇数位置的 替换为两个反引号 第 2、4、6 等偶数位置的 替换为两个单引号 ‘’其余字符保持原样最终输出转换完成后的完整文本。输入格式输入由多行文本组成文本中双引号 的总数量为偶数输入以文件结束符作为终止标记。输出格式输出文本需要和输入文本内容、排版完全保持一致仅有以下两处替换规则每一对双引号里的第一个 替换为两个反引号 每一对双引号里的第二个 替换为两个单引号 ‘’。输入输出样例输入 #1复制运行To be or not to be,quoth theBard,that is the question.Theprogramming contestant replied:Imustdisagree.ToC or nottoC,that isTheQuestion!输出 #1复制运行Tobe or nottobe, quoth theBard,that is the question.Theprogramming contestant replied:Imustdisagree.ToC or nottoC,that isTheQuestion!题目分析与解题思路题目规则只处理字符 其余字符完全保留不变引号替换是按出现顺序奇偶切换第 1、3、5… 奇数个 → 第 2、4、6… 偶数个 → ‘’需要一个标记变量记录当前遇到的是第几个双引号每碰到一次 就翻转标记状态。解题思路读取完整输入文本,包含空格、换行等创建布尔标记 flag初始为 true代表下一个双引号该换成左引号遍历文本每一个字符如果当前字符不是 直接拼接到结果如果是 flagtrue 用 再把 flag置为 falseflagfalse 用 ‘’再把 flag 置为 true遍历结束输出拼接好的结果字符串。解题代码importjava.util.Scanner;publicclassTexQuotes{publicstaticvoidmain(String[]args){ScannerscannernewScanner(System.in);booleanflagtrue;//循环读取每一行while(scanner.hasNextLine()){Stringlinescanner.nextLine();Stringoutput;for(inti0;iline.length();i){//取字符charchline.charAt(i);//判断是否为if(ch){if(flag){outputoutput;}else{outputoutput;}flag!flag;}else{outputoutputch;}}System.out.println(output);}scanner.close();}}评审结果